我的HBM文件中有以下实体:
<join table="v_price_change_current_prices" fetch="join" inverse="true">
<key column="product_color_id" />
<property name="oldMSRP" column="msrp" />
<property name="oldList" column="list" />
</join>
我的PRICE_CHANGE表有一个ID列(主键)和一个PRODUCT_COLOR_ID列。
我希望SQL Hibernate生成将V_PRICE_CHANGE_CURRENT_PRICES连接到PRICE_CHANGE.PRODUCT_COLOR_ID,如下所示:
SELECT * from PRICE_CHANGE a, V_PRICE_CHANGE_CURRENT_PRICES b
where a.product_color_id=b.product_color_id
但是它加入PRICE_CHANGE.ID而不是
SELECT * from PRICE_CHANGE a, V_PRICE_CHANGE_CURRENT_PRICES b
where a.product_color_id=b.product_color_id
有没有办法告诉元素使用PRICE_CHANGE.PRODUCT_COLOR_ID而不是PRICE_CHANGE.ID?
答案 0 :(得分:3)
根据文档,使用property-ref
元素中的<key>
可能会这样做:
5.1.21. Key
<key>
元素包含了一些内容 本指南中的时间。它出现 父映射元素的任何位置 定义一个新表的连接 引用的主键 原始表。它还定义了 连接表中的外键:<key column="columnname" (1) on-delete="noaction|cascade" (2) property-ref="propertyName" (3) not-null="true|false" (4) update="true|false" (5) unique="true|false" (6) />
column
(可选):外键列的名称。这也可以 由嵌套指定 元件(一个或多个)。on-delete
(可选 - 默认为noaction):指定是否 外键约束有 数据库级别级联删除已启用。property-ref
(可选):指定外键引用 到不是主要的列 原表的关键。它是 为遗留数据提供。not-null
(可选):指定外键列不是 空。无论什么时候这都暗示着 外键也是其中的一部分 主键。update
(可选):指定永远不应该使用外键 更新。无论什么时候这都暗示着 外键也是其中的一部分 主键。- 醇>
unique
(可选):指定外键应具有唯一性 约束。这意味着什么 外键也是主要的 键。
但我不确定这是否已实施(请参阅HHH-551,HHH-1829)。
如果您真的不想使用共享主键,另一种方法是使用合成和“真正的”one-to-one关联。