我有两个类,CalculatedValue和Price。 Price有CalculatedValue的地图。每个CalculableValue实例都有名称,值和其他几个字段。
这是我用来描述Price和CV之间的依赖关系的映射:
@OneToMany(
cascade = CascadeType.ALL,
fetch = FetchType.EAGER
)
@JoinColumn(name = "priceId")
private Map<String, CalculatedValue> calculatedValues =
new TreeMap<String, CalculatedValue>();
没有联接表,只是通过priceId列进行映射,该列引用价格唯一ID。
以下是生成表的外观:
CREATE TABLE PUBLIC.CALCULATEDVALUE( UNIQUEID BIGINT非空, KEY VARCHAR(2147483647)NOT NULL, PRICEID BIGINT, VALUE DOUBLE NOT NOT NULL, CALCULATEDVALUES_KEY VARCHAR(2147483647), 主要钥匙(UNIQUEID) );
ALTER TABLE PUBLIC.CALCULATEDVALUE 添加外键(PRICEID) 参考文献TEST.PUBLIC.PRICE(UNIQUEID);
一切正常,但我想知道是否可以这样做:
提前谢谢!
PS。我正在使用最新版本的EclipseLink&amp; H2作为数据库。 PPS。不想将可计算的值存储在数组中,因为我需要经常在Java中找到它的购买密钥。
答案 0 :(得分:1)
有关地图的信息,请参阅
http://en.wikibooks.org/wiki/Java_Persistence/OneToMany
和
http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Maps
和
http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_cascadeondelete.htm#CIABIIEB
一些问题: