FAQ
Hey all,

Running through the tutorials, I know what that error means, but I don't
think I've done anything wrong. Can someone take a quick look at this
xml/object set and tell me what I did wrong? Any help would be greatly
appreciated.

Mapping.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.example.cayenne.persistent"/>
<db-entity name="ARTIST">
<db-attribute name="ID" type="BIGINT" isPrimaryKey="true"
isMandatory="true"/>
<db-attribute name="Name" type="VARCHAR" length="255"/>
</db-entity>
<db-entity name="PAINTING">
<db-attribute name="ID" type="BIGINT" isPrimaryKey="true"
isMandatory="true"/>
<db-attribute name="Name" type="VARCHAR" length="255"/>
</db-entity>
<obj-entity name="Artist"
className="main.java.org.example.cayenne.persistent.Artist"
dbEntityName="ARTIST">
<obj-attribute name="name" type="java.lang.String"
db-attribute-path="Name"/>
</obj-entity>
<obj-entity name="Painting"
className="main.java.org.example.cayenne.persistent.Painting"
dbEntityName="PAINTING">
<obj-attribute name="name" type="java.lang.String"
db-attribute-path="Name"/>
</obj-entity>
<db-relationship name="paintings" source="ARTIST" target="PAINTING"
toMany="true">
<db-attribute-pair source="ID" target="ID"/>
</db-relationship>
<db-relationship name="artist" source="PAINTING" target="ARTIST"
toMany="false">
<db-attribute-pair source="ID" target="ID"/>
</db-relationship>
<obj-relationship name="paintings" source="Artist" target="Painting"
deleteRule="Deny" db-relationship-path="paintings"/>
<obj-relationship name="artist" source="Painting" target="Artist"
deleteRule="Deny" db-relationship-path="artist"/>
</data-map>

_Artist.java
public abstract class _Artist extends CayenneDataObject {

public static final String NAME_PROPERTY = "name";
public static final String PAINTINGS_PROPERTY = "paintings";

public static final String ID_PK_COLUMN = "ID";

public void setName(String name) {
writeProperty("name", name);
}
public String getName() {
return (String)readProperty("name");
}

public void addToPaintings(Painting obj) {
addToManyTarget("paintings", obj, true);
}
public void removeFromPaintings(Painting obj) {
removeToManyTarget("paintings", obj, true);
}
@SuppressWarnings("unchecked")
public List<Painting> getPaintings() {
return (List<Painting>)readProperty("paintings");
}


}

_Painting.java
public abstract class _Painting extends CayenneDataObject {

public static final String NAME_PROPERTY = "name";
public static final String ARTIST_PROPERTY = "artist";

public static final String ID_PK_COLUMN = "ID";

public void setName(String name) {
writeProperty("name", name);
}
public String getName() {
return (String)readProperty("name");
}

public void setArtist(Artist artist) {
setToOneTarget("artist", artist, true);
}

public Artist getArtist() {
return (Artist)readProperty("artist");
}


}


JUnit test case:
// JUnit
public void testBuild()
throws Exception
{
System.out.println("Begin Test");
try {
ObjectContext context = DataContext.createDataContext();
Artist picasso = context.newObject(Artist.class);
picasso.setName("Pablo Picasso");


Painting girl = context.newObject(Painting.class);
girl.setName("Girl Reading at a Table");
girl.setArtist(picasso);

Painting stein = context.newObject(Painting.class);
stein.setName("Gertrude Stein");
stein.setArtist(picasso);

picasso.addToPaintings(girl);
picasso.addToPaintings(stein);

context.commitChanges();

} catch (Exception e) {
e.printStackTrace();
}
System.out.println("End Test");
}

Search Discussions

Discussion Posts

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 1 of 11 | next ›
Discussion Overview
groupuser @
categoriescayenne
postedOct 26, '10 at 4:24p
activeOct 27, '10 at 1:37p
posts11
users4
websitecayenne.apache.org

People

Translate

site design / logo © 2022 Grokbase