2014-06-10 118 views
5

我在設計CrudRepository中的查詢時遇到了一些麻煩。CrudRepository:由多個相關實體查找

我有兩個實體,CourseOffering和系(僅顯示相關的代碼):

CourseOffering.java:

public class CourseOffering implements Serializable 
{ 
    private Department department; 

    @ManyToOne(fetch = FetchType.LAZY, optional = true) 
    @JoinColumn(name = "DepartmentId", nullable = true) 
    @JsonProperty 
    public Department getDepartment() 
    { 
     return this.department; 
    } 

    public void setDepartment(Department department) 
    { 
     this.department = department; 
    } 
} 

Department.java:

public class Department implements Serializable 
{ 
    private Set<CourseOffering> courses; 

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "department") 
    public Set<CourseOffering> getCourses() { 
     return this.courses; 
    } 

    public void setCourses(Set<CourseOffering> courses) { 
     this.courses = courses; 
    } 
} 

和有關CrudRepository :

CourseOfferingRepository.java:

import java.util.List; 
import edu.ucdavis.dss.dw.entities.CourseOffering; 
import org.springframework.data.repository.CrudRepository; 

public interface CourseOfferingRepository extends CrudRepository<CourseOffering, Long> 
{ 
    CourseOffering getOneByTermIdAndNumberAndDepartmentId(long termId, String number, 
      long departmentId); 

    List<CourseOffering> findByDepartmentCode(String deptCode); 

    //List<CourseOffering> findAllByDepartmentCode(String deptCodes); 

    List<CourseOffering> findByTermCode(String termCode); 
} 

CourseOfferingRepository中未註釋的三個函數按預期工作。我試圖讓第四個工作。

我想要做的是能夠返回所有CourseOfferings,其中部門代碼是許多部門代碼之一。請注意,CourseOffering表本身只保存一個department_id整數,該整數引用部門表中的ID,其中存儲了實際的dept代碼。

我該如何解決讓CrudRepository功能正常工作的評論?換句話說,如何製作複數版本的「List findByDepartmentCode(String deptCode);」?

在此先感謝您提供的任何建議。

+2

是否'findByDeptCodeIn(收藏 deptCodes)'做你想要什麼? – geoand

+0

是的,謝謝!最後還不知道「In」位。 – Christopher

+0

我添加了評論作爲答案:) – geoand

回答

6

您需要更改註釋掉的代碼:

List<CourseOffering> findByDeptCodeIn(Collection<String> deptCodes)

退房this文件的一部分,看看有什麼其他的關鍵字被允許

+0

只有在'Department'類中有關係時纔可以使用它嗎? (我的意思是在'CourseOffering'類中沒有部門屬性)。 – PhoneixS

+0

@PhoneixS我還沒有嘗試過,但我嚴重懷疑它會工作 – geoand

1

由於geoand在評論中指出,答案是:

List<CourseOffering> findByDepartmentCodeIn(List<String> deptCodes); 

感謝geoand!

+0

非常歡迎! – geoand