2012-03-05 88 views
0

我有以下Hibernate的實體:Hibernate查詢,內部列表

@Entity 
class A{ 
    String name; 
} 

@Entity 
class B{ 
    List<A> aList; 
} 

我想從數據庫中獲取所有ALL的從列表中的名字是像B的列表例如,以下列表:

String lst[] = {"str1", "str2"}; 

我需要檢索有兩個A具有相同的字符串列表作爲數組所有的B項。

我更喜歡使用Criteria查詢,但HQL或SQl也可以。

回答

0

如果A和B的實體分別保持在A_table和B_table,以及一對多的關係船從A到B保持在A_table列B_ID,則對應的SQL會是這樣的:

select distinct * from B_table join A_table on A_table.b_id=B_table .id where A_table.name="str1" or A_table.name="str2" 

HQL查詢會是這樣的:

select distinct b from B b inner join B.aList as a where a.name='str1' or a.nama='str2'