【发布时间】:2012-11-28 21:12:11
【问题描述】:
我有两个类,CalculatedValue 和 Price。价格有计算价值的地图。每个 CalculableValue 实例都有名称、值和其他几个字段。
这是我用来描述 Price 和 CV 之间依赖关系的映射:
@OneToMany(
cascade = CascadeType.ALL,
fetch = FetchType.EAGER
)
@JoinColumn(name = "priceId")
private Map<String, CalculatedValue> calculatedValues =
new TreeMap<String, CalculatedValue>();
没有连接表,只是通过 priceId 列映射,该列引用 Price 唯一 ID。
生成的表格如下所示:
创建表 PUBLIC.CALCULATEDVALUE ( UNIQUEID BIGINT NOT NULL, 键 VARCHAR(2147483647) 非空, 价格昂贵的大整数, 值双非空, CALCULATEDVALUES_KEY VARCHAR(2147483647), 主键(唯一标识) );
更改表 PUBLIC.CALCULATEDVALUE 添加外键(PRICEID) 参考 TEST.PUBLIC.PRICE (UNIQUEID);
一切正常,但我想知道是否可以这样做:
- 避免自动创建“CALCULATEDVALUES_KEY”列。我已经将此值存储在 KEY 列中,避免重复并以某种方式向 JPA 提供提示会很好。
- 触发级联删除每个已删除价格的可计算值(如果我正在运行 SQL 删除语句)
- 如果我使用 Date 作为键,这样的映射会起作用吗?不是对于这个特定的领域,而是对于其他一些领域,它会很有用。假设相同的 OneToMany 关系。
提前谢谢你!
PS。我正在使用最新版本的 EclipseLink & H2 作为数据库。 聚苯乙烯。不想将可计算的值存储在数组中,因为我需要经常在 Java 中找到它的购买键。
【问题讨论】:
标签: jpa eclipselink treemap