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
> 
> 
> 

Reply via email to