2015-04-30 100 views
1

我有3個關係中的實體。以下是我班的一個簡單的例子:如何查詢具有多對多關係的實體?

@Entity 
public class Action {} 

@Entity 
public class Instance { 

    @ManyToMany 
    private Set<Action> actions; 

    @ManyToMany 
    private Set<CadSystem> cadSystems; 

} 

@Entity 
public class CadSystem {} 

我如何可以查詢屬於特定ActionCadSystem所有Instance S' 比如我希望做一個JpaRepository如下:

public interface InstanceRepository extends JpaRepository<Instance, Long> { 

    List<Instance> findByActionAndCadSystem(Action action, CadSystem cadSystem); 

} 

但是,這是不可能的,因爲Instance沒有名爲actioncadSystem領域。 我認爲有以下將工作:

public interface InstanceRepository extends JpaRepository<Instance, Long> { 

    List<Instance> findByActionsAndCadSystems(Set<Action> actions, Set<CadSystem> cadSystems); 

} 

但在這種情況下,我總是要創建一個新的Set只有一個元素。

回答

0

使用查詢。此外,請注意,由於關聯是多對多的,因此此查詢可能會返回多個操作:

select i from Instance i 
join i.actions action 
join i.cadSystems cadSystem 
where action = :action 
and cadSystem = :cadSystem 
相關問題