Sql 使用不同的联接列名联接两个表
我有两个带有多对一映射/关联的表A->B 表B的主键是表A中的外键 问题是两个表中的列名不同。假设B有主键列“typeNumId”,它是表A中作为“type”的外键。如何连接此列上的两个表?我如何指定映射来指示表必须在本质上相同的“typeNumId”和“type”上连接 尤其是通过hibernate配置(hbm文件)可以实现吗 差不多Sql 使用不同的联接列名联接两个表,sql,hibernate,orm,join,hibernate-mapping,Sql,Hibernate,Orm,Join,Hibernate Mapping,我有两个带有多对一映射/关联的表A->B 表B的主键是表A中的外键 问题是两个表中的列名不同。假设B有主键列“typeNumId”,它是表A中作为“type”的外键。如何连接此列上的两个表?我如何指定映射来指示表必须在本质上相同的“typeNumId”和“type”上连接 尤其是通过hibernate配置(hbm文件)可以实现吗 差不多 <many-to-one name="Type" class="com.domain.ProcedureType" update="false" inse
<many-to-one name="Type" class="com.domain.ProcedureType" update="false" insert="false" fetch="join" lazy="false">
<column name="? <this is in questions? >" not-null="true" />
</many-to-one>
像这样的东西
LEFT JOIN B on A.field1 = B.field2
根据您的喜好选择加入类型on子句:
select * from A join B on A.type = B.typeNumId
使用
多对一
元素的列
属性或等效嵌套列
元素声明外键的名称。从文件中:
5.1.12. 多对一
与他人的普通联系
持久类是使用
多对一元素。关系型
模型是一个多对一的关联;A.
一个表中的外键是
引用主键列
目标表的属性
<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"
/>
<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>
参考文献
- Hibernate核心文档