You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by "Hans C. Poo" <ha...@welinux.cl> on 2011/05/12 19:10:28 UTC

Help or sample on vertical inheritance

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



Re: Help or sample on vertical inheritance

Posted by "Hans C. Poo" <ha...@welinux.cl>.
Andrus,

Good, thanks it's working now.

Besides following the indications in the manual, analysing your response i've 
noticed the following things that weren't obvious (for me) at first:

- The child class must map to the parent table.
  In Child Entity in the Entity tab Table/View must be changed to the parent table.

- Manually map attributes of the Child Entity to the Child Table
  When we map the Child Entity to use the Parent Table, the attributes
  of the Child are no longer present in the parent table, though, we must 
  manually map every attribute of the Child Entity to its corresponding 
  attribute in the Child Table, the problem is that the Modeler 3.0.1 doesn't include them
  in the Combo Box where you set DBAttribute, and this modification must be done 
  manually in the XML Map file, the format is table.field.


Bye
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" <an...@objectstyle.org>
Para: user@cayenne.apache.org
Enviados: Miércoles, 18 de Mayo 2011 19:55:26
Asunto: Re: Help or sample on vertical inheritance

Ok, here is a modified version of that DataMap that has vertical inheritance mapped correctly. Per http://cayenne.apache.org/doc30/modeling-vertical-inheritance.html v-inheritance in Cayenne is the same as single-table, only with flattened attributes to child tables. So the main change that I made was mapping Programmer to ARTIST table, and then flattenning "languages" attribute to "programmer.LANGUAGES". 

Also removed ObjRelationships between Artist and Programmer. That should be it. 

Sorry for delayed reply.

Cheers,
Andrus


<?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="ARTIST">
		<qualifier><![CDATA[tipo = "P"]]></qualifier>
		<obj-attribute name="languages" type="java.lang.String" db-attribute-path="programmer.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="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"/>
</data-map>


Re: Help or sample on vertical inheritance

Posted by Andrus Adamchik <an...@objectstyle.org>.
Ok, here is a modified version of that DataMap that has vertical inheritance mapped correctly. Per http://cayenne.apache.org/doc30/modeling-vertical-inheritance.html v-inheritance in Cayenne is the same as single-table, only with flattened attributes to child tables. So the main change that I made was mapping Programmer to ARTIST table, and then flattenning "languages" attribute to "programmer.LANGUAGES". 

Also removed ObjRelationships between Artist and Programmer. That should be it. 

Sorry for delayed reply.

Cheers,
Andrus


<?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="ARTIST">
		<qualifier><![CDATA[tipo = "P"]]></qualifier>
		<obj-attribute name="languages" type="java.lang.String" db-attribute-path="programmer.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="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"/>
</data-map>


Re: Help or sample on vertical inheritance

Posted by "Hans C. Poo" <ha...@welinux.cl>.
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" <an...@objectstyle.org>
Para: user@cayenne.apache.org
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
> 
> 
> 


Re: Help or sample on vertical inheritance

Posted by Andrus Adamchik <an...@objectstyle.org>.
Hi Hans,

I saw your message. Sorry didn't have time to try out the mapping yet. 

Andrus

On May 17, 2011, at 11:17 AM, Hans C. Poo wrote:

> Andrus,
> 
> ¿ Did you found something strange in the map ? or ¿ do you have any working sample that i can adapt ?
> 
> Thank you
> 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" <an...@objectstyle.org>
> Para: user@cayenne.apache.org
> 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
>> 
>> 
>> 
> 
> 


Re: Help or sample on vertical inheritance

Posted by "Hans C. Poo" <ha...@welinux.cl>.
Andrus,

¿ Did you found something strange in the map ? or ¿ do you have any working sample that i can adapt ?

Thank you
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" <an...@objectstyle.org>
Para: user@cayenne.apache.org
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
> 
> 
> 


Re: Help or sample on vertical inheritance

Posted by Andrus Adamchik <an...@objectstyle.org>.
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
> 
> 
>