I'm developing webapp using Spring & Hibernate.
Table 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 | | |
+------------+--------------+------+-----+---------+----------------+
Table 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 | | |
+------------+--------------+------+-----+---------+----------------+
I need join the tables based on serials. The Serial
in Table2
may contain values from either Serial1
or Serial2
from Table1
so it should compare like an OR operator. I'm using hbm.xml for tables. No annotation mapping. I've joined tables like:
<one-to-one name="notes"
class="Notes" entity-name="Notes">
</one-to-one>
I was using this Query before:
SELECT A.* FROM Table2 As a INNER JOIN Table1 As b
ON (a.Serial = b.Serial1 or a.Serial = b.Serial2);
I went through this http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/associations.html but only 1 key column is being used.
How do I join using HBM.XML for this scenario? Is it possible?