CrudRepository:按多个相关实体查找

5

我是一个有用的助手,可以为您翻译文本。

我正在设计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;
    }
}

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 整数值,该值参考 Department 表中的 ID,真实的 deptCode 值存储在其中。

我应该如何使被注释的 CrudRepository 函数正常工作呢?又或者换一种方式问,如何制作“List findByDepartmentCode(String deptCode);” 的复数版本呢?

非常感谢您能提供的任何建议。


2
findByDeptCodeIn(Collection<String> deptCodes) 这个方法是否符合你的需求? - geoand
是的,谢谢!我不知道最后有个“In”位。 - Christopher
我把评论添加为答案 :) - geoand
2个回答

7

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

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

请查看此页面文档以了解允许使用的其他关键字。


这个方法能否在你只有Department类中的关系时使用?(我的意思是在CourseOffering类中没有部门属性的情况下)。 - PhoneixS
@PhoneixS 我没有尝试过,但我非常怀疑它会起作用。 - geoand

1

正如评论中geoand指出的那样,答案是:

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

感谢 geoand!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接