2012-10-24 108 views
0

可能重複:
How to write JPA query where parameter is a set?Quering取決於兒童ID

我有2個實體

@Entity 
public class Container { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    Long id; 

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
    Set<Child> data = newHashSet(); 
} 
@Entity 
public class Child { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    Long id; 
} 

現在我想選擇一個包含指定孩子的所有容器。 我寫了JPA查詢select c from Container c where :child in c.data產生SQL

select 
    container0_.id as id4_ 
from 
    Container container0_ 
    cross join Container_Child data1_, Child child2_ 
where 
    container0_.id=data1_.Container_id 
and data1_.data_id=child2_.id 
and (? in (.)) 
limit ? [42001-168] 

和失敗,JdbcSQLException。我該如何解決它?

+0

oops!忽略我的評論。 – Vikdor

+2

http://stackoverflow.com/questions/3492018/how-to-write-jpa-query-where-parameter-is-a-set - 不是你的問題一樣嗎? – MrKiller21

+1

嘗試:SELECT con FROM容器con JOIN con.data ch WHERE ch =:子 –

回答

0

Try:SELECT con FROM Container con JOIN con.data ch WHERE ch = :child