Andrus, Thank you for your time, i modified a little bin cayenne-3.0.1/tutorials/tutorial
The only modified file is UntitledDomainMap.map.xml: <?xml version="1.0" encoding="utf-8"?> <data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap http://cayenne.apache.org/schema/3.0/modelMap.xsd" project-version="3.0.0.1"> <property name="defaultPackage" value="org.apache.cayenne.tutorial.persistent"/> <db-entity name="ARTIST"> <db-attribute name="DATE_OF_BIRTH" type="DATE"/> <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/> <db-attribute name="NAME" type="VARCHAR" length="200"/> <db-attribute name="TIPO" type="CHAR" isMandatory="true" length="1"/> </db-entity> <db-entity name="GALLERY"> <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/> <db-attribute name="NAME" type="VARCHAR" length="200"/> </db-entity> <db-entity name="PAINTING"> <db-attribute name="ARTIST_ID" type="INTEGER"/> <db-attribute name="GALLERY_ID" type="INTEGER"/> <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/> <db-attribute name="NAME" type="VARCHAR" length="200"/> </db-entity> <db-entity name="PROGRAMMER"> <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/> <db-attribute name="LANGUAGES" type="VARCHAR" length="256"/> </db-entity> <obj-entity name="Artist" className="org.apache.cayenne.tutorial.persistent.Artist" dbEntityName="ARTIST"> <obj-attribute name="dateOfBirth" type="java.util.Date" db-attribute-path="DATE_OF_BIRTH"/> <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/> <obj-attribute name="tipo" type="java.lang.String" db-attribute-path="TIPO"/> </obj-entity> <obj-entity name="Gallery" className="org.apache.cayenne.tutorial.persistent.Gallery" dbEntityName="GALLERY"> <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/> </obj-entity> <obj-entity name="Painting" className="org.apache.cayenne.tutorial.persistent.Painting" dbEntityName="PAINTING"> <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/> </obj-entity> <obj-entity name="Programmer" superEntityName="Artist" className="org.apache.cayenne.tutorial.persistent.Programmer" dbEntityName="PROGRAMMER"> <qualifier><![CDATA[tipo = "P"]]></qualifier> <obj-attribute name="languages" type="java.lang.String" db-attribute-path="LANGUAGES"/> </obj-entity> <db-relationship name="paintings" source="ARTIST" target="PAINTING" toMany="true"> <db-attribute-pair source="ID" target="ARTIST_ID"/> </db-relationship> <db-relationship name="programmer" source="ARTIST" target="PROGRAMMER" toDependentPK="true" toMany="false"> <db-attribute-pair source="ID" target="ID"/> </db-relationship> <db-relationship name="paintings" source="GALLERY" target="PAINTING" toMany="true"> <db-attribute-pair source="ID" target="GALLERY_ID"/> </db-relationship> <db-relationship name="artist" source="PAINTING" target="ARTIST" toMany="false"> <db-attribute-pair source="ARTIST_ID" target="ID"/> </db-relationship> <db-relationship name="gallery" source="PAINTING" target="GALLERY" toMany="false"> <db-attribute-pair source="GALLERY_ID" target="ID"/> </db-relationship> <db-relationship name="artist" source="PROGRAMMER" target="ARTIST" toMany="false"> <db-attribute-pair source="ID" target="ID"/> </db-relationship> <obj-relationship name="paintings" source="Artist" target="Painting" deleteRule="Cascade" db-relationship-path="paintings"/> <obj-relationship name="programmer" source="Artist" target="Programmer" deleteRule="Nullify" db-relationship-path="programmer"/> <obj-relationship name="paintings" source="Gallery" target="Painting" deleteRule="Nullify" db-relationship-path="paintings"/> <obj-relationship name="artist" source="Painting" target="Artist" deleteRule="Nullify" db-relationship-path="artist"/> <obj-relationship name="gallery" source="Painting" target="Gallery" deleteRule="Nullify" db-relationship-path="gallery"/> <obj-relationship name="artist" source="Programmer" target="Artist" deleteRule="Nullify" db-relationship-path="artist"/> </data-map> Thanks Hans Hans Poo, Welinux S.A. Bombero Ossa #1010, oficina 800, +56-2-3729770, Movil: +56-9-3199305 Santiago, Chile ----- Mensaje original ----- De: "Andrus Adamchik" <[email protected]> Para: [email protected] Enviados: Viernes, 13 de Mayo 2011 6:51:55 Asunto: Re: Help or sample on vertical inheritance Could you please post mapping XML? There were a few snags with vertical inheritance. Could be one of them. Andrus On May 12, 2011, at 8:10 PM, Hans C. Poo wrote: > Hi, > > I'm using stable cayenne 3.0.1. > > Following the tutorial in vertical inheritance i've been unable to make > vertical inheritance work. > > I've modified the tutorial app adding a Programmar as Child of Artist. > > It have the following error: > > Exception in thread "main" org.apache.cayenne.validation.ValidationException: > [v.3.0.1 Sep 06 2010 15:09:38] Validation failures: Validation failure for > org.apache.cayenne.tutorial.persistent.Programmer.artist: "artist" is > required. > Validation failure for > org.apache.cayenne.tutorial.persistent.Programmer.artist: "artist" is > required. > at > org.apache.cayenne.access.ObjectStoreGraphDiff.validateAndCheckNoop(ObjectStoreGraphDiff.java:111) > at > org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1095) > at > org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1045) > at org.apache.cayenne.tutorial.Main.main(Main.java:48) > > The code for creating a new Programmer in main is: > > Programmer picasso = context.newObject(Programmer.class); > picasso.setTipo("P"); // Discriminator added in Artist > picasso.setName("Pablo Picasso"); > picasso.setDateOfBirthString("18811025"); > > Any help will be appreciated. > Bye > > Hans Poo, Welinux S.A. > Bombero Ossa #1010, oficina 526, > +56-2-3729770, Movil: +56-9-3199305 > Santiago, Chile > > >
