问题描述
我有一个名为 User.java 的类,它具有活动列表。 Activity.java 是由 Dance.java 和 Drawing.java扩展的抽象类
public class User {
private UserKey userKey; // PK (UserKey is another embeddable class and has a string userId)
private List<Activity> activities;
//some more fields and getter setters
}
public abstract class Activity {
// has nothing. I can add ID field if needed.
}
public class Dance extends Activity {
private DanceKey danceKey; // PK. DanceKey is another embeddable class and has a string danceId.
private String danceName;
// some more fields and getter setters
}
public class Drawing extends Activity {
private DrawingKey drawingKey; // PK. DrawingKey is another embeddable class and has a string drawingId.
private String drawingName;
// some more fields and getter setters
}
以下是orm文件:
user.orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.5"
xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_5.xsd">
<entity name="User" class="com.app001.demo.User">
<table name="USER" />
<attributes>
<embedded-id attribute-type="com.app001.demo.UserKey" name="userKey">
<attribute-override name="key">
<column name="USER_ID"/>
</attribute-override>
</embedded-id>
<!-- what do i put here for list of activities-->
</attributes>
</entity>
</entity-mappings>
dance.orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.5"
xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_5.xsd">
<entity name="Dance" class="com.app001.demo.Dance">
<table name="DANCE" />
<attributes>
<embedded-id attribute-type="com.app001.demo.DanceKey" name="danceKey">
<attribute-override name="key">
<column name="DANCE_ID"/>
</attribute-override>
</embedded-id>
<basic attribute-type="java.lang.String" name="danceName">
<column name="DANCE_NAME"/>
</basic>
</attributes>
</entity>
</entity-mappings>
drawing.orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.5"
xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_5.xsd">
<entity name="Drawing" class="com.app001.demo.Drawing">
<table name="DRAWING" />
<attributes>
<embedded-id attribute-type="com.app001.demo.DrawingKey" name="drawingKey">
<attribute-override name="key">
<column name="DRAWING_ID"/>
</attribute-override>
</embedded-id>
<basic attribute-type="java.lang.String" name="drawingName">
<column name="DRAWING_NAME"/>
</basic>
</attributes>
</entity>
</entity-mappings>
activity.orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.5"
xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_5.xsd">
<!-- what do i put here for activity-->
我尝试了以下方法:
- 在activity.orm.xml中,如果我将Activity.java设为
<mapped-superclass>
,则此方法不起作用,因为不允许我与<inheritance-strategy>
一起输入任何<mapped-superclass>
- 在activity.orm.xml中,如果我将Activity.java标记为
<entity>
,将<inheritance_strategy>
标记为 TABLE_PER_CLASS 或 JOINED 我收到以下错误: 在同步期间,通过未标记为层叠PERSIST的关系找到了一个新对象
请让我知道如何为我的案例为activity.orm.xml编写ORM。 注意 ,我不能过多地更改Java代码。如果需要,我可以在Activity.java中添加一个ID。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)