CrudRepository:由多个相关实体查找

Chr*_*her 5 java sql spring hibernate spring-data

我在CrudRepository中设计查询时遇到了一些麻烦.

我有两个实体,CourseOffering和Department(仅显示相关代码):

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

和有问题的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);
}
Run Code Online (Sandbox Code Playgroud)

CourseOfferingRepository中未注释掉的三个函数按预期工作.我想让第四个工作.

我想做的是能够返回所有CourseOfferings,其中部门代码是许多部门代码之一.请注意,CourseOffering表本身只包含一个department_id整数,该整数引用Department表中的ID,其中存储了实际的deptCode.

我如何才能将注释掉的CrudRepository函数正常工作?或换句话说,如何制作复数版本的"List findByDepartmentCode(String deptCode);"?

提前感谢您提供的任何建议.

geo*_*and 6

您需要将注释掉的代码更改为:

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

查看文档的这一部分,了解允许的其他关键字