有沒有什麼辦法可以在沒有直接關係的情況下連接兩個表格,但是在hibernate中有兩個共同的字段?在休眠中加入兩個不相關的表格
我有兩個名爲boiler_plates和profile的表,它們之間沒有直接關係,但有一個名爲contract_id的公共字段。
我寫了查詢「來自Boiler_Plates bp內連接配置文件p bp.bt_contracts = p.contract_id」,但它一直拋出錯誤。 「 意外標記:在第1行第75列[來自com.catapult.bid.model.Boiler_Plates作爲bp內部聯接概要文件,作爲p在bp.bt_contracts = p.contract_id其中bp.bt_contracts = 1]」。
下面是boiler_plates和profiles的hibernate映射文件。
boiler_plates的映射文件。對於檔案
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.catapult.bid.model" default-access="field" >
<class name="Boiler_Plates" table="bt_boiler_plates" schema="bidtool">
<id name="boiler_plate_id" type="int" column="boiler_plate_id">
<generator class="sequence">
<param name="sequence">bidtool.boiler_plates_boiler_plate_id_seq</param>
</generator>
</id>
<property name="boilerPlateName" type="string">
<column name="boiler_plate_name" length="20" not-null="true" />
</property>
<property name="editable" type="int">
<column name="editable"/>
</property>
<property name="boilerPlateContent" type="string">
<column name="boiler_plate_content" length="20" />
</property>
<property name="insertTime" type="date" insert="false">
<column name="insert_time_stamp"/>
</property>
<many-to-one class="Contracts" fetch="select" name="bt_contracts">
<column name="contract_id"/>
</many-to-one>
</class>
</hibernate-mapping>
映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-access="field" package="com.catapult.bid.model">
<class name="Profiles" schema="bidtool" table="bid_tool_profiles">
<id column="profile_id" name="profileId" type="string">
<generator class="com.catapult.bid.commons.ProfileIDGenerator"/>
</id>
<many-to-one class="User" fetch="select" name="appUsers">
<column name="user_id"/>
</many-to-one>
<property name="profileContent" type="string">
<column name="profile_content"/>
</property>
<property name="scac" type="string">
<column length="20" name="scac"/>
</property>
<property name="created" type="timestamp" update="false">
<column name="insert_timestamp"/>
</property>
<property name="status" type="string">
<column length="9" name="status" not-null="true"/>
</property>
<property name="editable" type="string">
<column length="1" name="editable" not-null="true"/>
</property>
</class>
</hibernate-mapping>
但是,這將導致生成的SQL中的CROSS JOIN! – Tarik