首页 文章

JPA SortedMap映射 - 避免使用两列键

提问于
浏览
2

我有两个类,CalculatedValue和Price . Price有CalculatedValue的 Map . 每个CalculableValue实例都有名称,值和其他几个字段 .

这是我用来描述Price和CV之间的依赖关系的映射:

@OneToMany(
        cascade = CascadeType.ALL,
        fetch = FetchType.EAGER
)
@JoinColumn(name = "priceId")
private Map<String, CalculatedValue> calculatedValues =
        new TreeMap<String, CalculatedValue>();

没有连接表,只是通过priceId列进行映射,该列引用Price Unique Id .

以下是生成的表的外观:

CREATE TABLE 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 ADD FOREIGN KEY(PRICEID)REFERENCES TEST.PUBLIC.PRICE(UNIQUEID);

一切正常,但我想知道是否有可能:

  • 避免自动"CALCULATEDVALUES_KEY"列创建 . 我已将此值存储在KEY列中,这样可以避免重复并以某种方式给JPA提示 .

  • 触发级联删除每个已删除价格的可计算值(如果我正在运行SQL删除语句)

  • 如果我将Date用作关键字,这样的映射是否会起作用?不适用于这个特定领域,但对于其他一些领域,它将是有用的 . 假设同一个OneToMany关系 .

先感谢您!

PS . 我使用最新版本的EclipseLink和H2作为数据库 . PPS . 不想将可计算的值存储在数组中,因为我需要经常在Java中找到它的购买密钥 .

1 回答

相关问题