2013-09-24 4 views
0

@Query 주석이 필요하지 않은지 궁금해서 Spring 데이터가 아래 엔티티 관계에 대한 메소드 이름과 메소드 매개 변수를 기반으로 JPA 쿼리를 구성하게합니다. 특정 항목과 관련된 ItemLocations 목록을 검색하고 싶습니다. 아래 서명을 시도했지만 @Query 없이는 작동하지 않았습니다. Item 객체 대신 Item.id를 전달하는 것이 더 효율적입니까 (효율적/효과적입니까)?메소드 이름과 객체 매개 변수를 사용하는 스프링 데이터 쿼리 생성

봄 데이터 버전 : 1.3.4.RELEASE

작업 봄 데이터 저장소 API :

@Query("FROM ItemLocation where item = ?") 
public List<ItemLocation> getAllItemLocations(Item item); 

원하는 스프링 데이터 저장소 API :

public List<ItemLocation> findAllItemLocations(Item item); 

JPA Enties :

@Entity 
    public class ItemLocation { 
     @ManyToOne 
     @JoinColumn(name="fk_item_id") 
     public Item getItem() { 
      return this.item; 
     } 
     public void setItem(Item item) { 
      this.item = item; 
     } 
     @Id 
     @GeneratedValue 
     public long getId() { 
      return this.id; 
     } 

     public void setId(long id) { 
      this.id = id; 
     } 

     private Item item; 
     private long id; 
    } 

    @Entity 
    public class Item { 
     @OneToMany(mappedBy="item", orphanRemoval=true) 
     @Cascade({org.hibernate.annotations.CascadeType.PERSIST}) 
     public Set<ItemLocation> getItemLocationList() { 
      return this.itemLocationList; 
     } 
     public void setItemLocationList(Set<ItemLocation> list) { 
      this.itemLocationList = list; 
     } 
     @Id 
     @GeneratedValue 
     public long getId() { 
      return this.id; 
     } 

     public void setId(long id) { 
      this.id = id; 
     } 

     private Set<ItemLocation> itemLocationList 
      = new HashSet<ItemLocation>(); 
     private long id; 
    } 

답변

0
public List<ItemLocation> findAllByItem(Item item); 

(저장소 ItemLocationRepository)

관련 문제