我有一个包含很多字段的表,例如
帐户
OrderNo
期限
LegNo
LegSymbol
LegSymbolType
LegExchangeType
等等
上表的主键是一个复合键,包括Account,OrderNo& LEGNO
数据库中的数据看起来像这样
1234 1 2 1 AAA BBB CCC
1234 1 2 2 DDD EEE FFF
粗体分别是Account,Order,LegNo。
在设计上表的实体时,我们希望将所有与Leg相关的信息(所有粗体列)分组到一个单独的类中,并将实体中的所有其他信息分组
因此,主要订单实体将包含嵌入对象Leg。 (我假设Leg不会被定义为实体,因为它不是一个单独的表)。
@Entity
@Table(name="xxx")
public class Order implements Serializable {
... All order specific fields & it's getters/setters
}
@Embeddable
public class Leg implements Serializable {
private long legNo;
private String legSymbol;
...
...
}
我假设订单实体将持有帐户,orderNo,Term信息和OrderLeg嵌入对象将是其他信息,如上所述。
我们可以为上述记录中显示的相同顺序设置多条腿。因此,我们可能需要在Order实体中包含leg的集合。
我们能否实现这项功能,因为我们只有一张桌子?我们无法更改表的架构或创建新表,因为它不受我们的控制。
我尝试在Leg List上的Order Entity中使用@ElementCollection,但看起来,当我尝试保留新订单时,Leg细节不会被视为查询的一部分。
如果我将hibernate.hbm2ddl.auto = create作为persistence.xml的一部分,它会删除现有的架构并更改现有的订单表以仅保留订单信息,并创建一个单独的支柱表来保存支路信息。是不希望的。
@Entity
@Table(name="xxx")
public class Order implements Serializable {
**@ElementCollection
private List<Leg> a = new ArrayList<Leg>();**
}
设置为Leg类的值(例如LegNo,LegSymbol等)根本不包含在插入查询中,因为LegNo是表中的必填字段,所以我总是得到一个例外。
请告知..