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