我正在使用Spring開發webapp & Hibernate。Hibernate - 有沒有辦法將2列加入1?
表1:BaseTable
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id | bigint(20) | NO | PRI | | auto_increment |
| Serial1 | varchar(255) | YES | | NULL | |
| Serial2 | varchar(255) | YES | | NULL | |
| ModelNum | varchar(255) | YES | | NULL | |
| ... | .... | .. | 0 | | |
+------------+--------------+------+-----+---------+----------------+
表2:DetailTable
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| Id1 | varchar(20) | NO | PRI | | |
| Id2 | varchar(20) | NO | PRI | | |
| Id3 | varchar(20) | NO | PRI | | |
| Serial | varchar(255) | YES | | NULL | |
| ... | .... | .. | 0 | | |
+------------+--------------+------+-----+---------+----------------+
我需要加入基於連續的表。在Table2
中的Serial
可以包含來自Serial1
或Serial2
的值,從Table1
,因此它應該像OR運算符那樣比較。我爲表使用hbm.xml。沒有註釋映射。我用這個查詢之前
<one-to-one name="notes"
class="Notes" entity-name="Notes">
</one-to-one>
:
SELECT A.* FROM Table2 As a INNER JOIN Table1 As b
ON (a.Serial = b.Serial1 or a.Serial = b.Serial2);
我通過這個http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/associations.html去,但只使用了1鍵列我加入表等。
如何在這種情況下使用HBM.XML加入?可能嗎?
示例:T1.Serial1包含A,T1.Serial2包含B表2的串行A有兩個行,一個串行B?你預期的結果是什麼?您可能希望兩次加入同一個表並將別名結果別名,但我可能是錯的...'select * from table1 T1 LEFT JOIN table2 T2a on T1.Serial1 = T2a.Serial LEFT JOIN table2 T2b on T1.Serial = T2b.Serial'這將把表2合併爲一行。使用一個OR,你會得到多個行,每個table1 ID ......這可能是你想要的......因此需要看到預期的結果。 – xQbert
它應該選擇兩行。 –
@xQbert:我已經添加了我正在使用的查詢。我想用Java代碼來代替Query,這個代碼的意思是Spring/Hibernate –