column
您使用元素的属性many-to-one
或等效的嵌套元素声明外键的名称column
。从文档中:
5.1.12。多对一
使用多对一元素声明与另一个持久类的普通关联。关系模型是多对一的关联;一个表中的外键正在引用目标表的主键列。
<many-to-one
name="propertyName" (1)
column="column_name" (2)
class="ClassName" (3)
cascade="cascade_style" (4)
fetch="join|select" (5)
update="true|false" (6)
insert="true|false" (6)
property-ref="propertyNameFromAssociatedClass" (7)
access="field|property|ClassName" (8)
unique="true|false" (9)
not-null="true|false" (10)
optimistic-lock="true|false" (11)
lazy="proxy|no-proxy|false" (12)
not-found="ignore|exception" (13)
entity-name="EntityName" (14)
formula="arbitrary SQL expression" (15)
node="element-name|@attribute-name|element/@attribute|."
embed-xml="true|false"
index="index_name"
unique_key="unique_key_id"
foreign-key="foreign_key_name"
/>
- 名称:属性的名称。
- column(可选):外键列的名称。这也可以由嵌套元素指定。
- 类(可选 - 默认为反射确定的属性类型):关联类的名称。
- cascade(可选):指定哪些操作应该从父对象级联到关联对象。
- fetch(可选 - 默认为 select):在外连接获取或顺序选择获取之间进行选择。
- update, insert(可选 - 默认为 true):指定映射列应包含在 SQL UPDATE 和/或 INSERT 语句中。将两者都设置为 false 允许纯“派生”关联,其值从映射到相同列的另一个属性初始化,或者由触发器或其他应用程序初始化。
- property-ref (可选):与此外键连接的关联类的属性名称。如果未指定,则使用关联类的主键。
- 访问(可选 - 默认为属性):Hibernate 用于访问属性值的策略。
- unique(可选):启用 DDL 为外键列生成唯一约束。通过允许它成为 property-ref 的目标,您可以使关联多重性一对一。
- not-null(可选):启用 DDL 为外键列生成可空性约束。
- 乐观锁(可选 - 默认为 true):指定对此属性的更新是否需要获取乐观锁。换句话说,它确定当这个属性变脏时是否应该发生版本增量。
- 懒惰(可选 - 默认为代理):默认情况下,单点关联是代理的。lazy="no-proxy" 指定第一次访问实例变量时应该延迟获取属性。这需要构建时字节码检测。lazy="false" 指定总是急切地获取关联。
- 未找到(可选 - 默认为异常):指定如何处理引用缺失行的外键。ignore 会将缺失的行视为空关联。
- entity-name(可选):关联类的实体名称。
- 公式(可选):定义计算外键值的 SQL 表达式。
所以这样的事情应该这样做:
<many-to-one name="Type" class="com.domain.ProcedureType" update="false" insert="false" fetch="join" lazy="false">
<column name="type" not-null="true" />
</many-to-one>
参考