【问题标题】:JPA Repository Name when uses Projections to select few fields使用 Projections 选择几个字段时的 JPA 存储库名称
【发布时间】:2020-04-24 09:36:03
【问题描述】:

我有一个实体类 Employee

@Entity
@Table(name = "EMP_MASTER")
public class Employee {

    private Integer employeeNumber;
    private String empFirstName;
    private String empSecondName;
    private int age;
    private String empAddress;

//constructor with fields ();
//getters and setters, equals and hascode , toString();
}

然后我就有了我的 JPARepo 接口。要选择员工 ID 和员工姓名,我正在使用预测。

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {

    public List<EmpIdAndEmpNameOnly> find(); // ? nothing is works here.

}

interface EmpIdAndEmpNameOnly {

    int getEmployeeNumber();

    String getEmpFirstName();
}

我希望获取所有员工编号和 empfirstname。在这种情况下,我的回购方法名称是什么?尝试了 findEmployee()、findEmployeeNumberAndEmpName(),没有任何效果。任何人请帮我找出这是如何工作的?它一直给我带来很大的困惑。谢谢。

【问题讨论】:

    标签: jpa java-8 spring-data-jpa


    【解决方案1】:

    简单的findAllProjectedByfindBy() 应该没问题,

    public List<EmpIdAndEmpNameOnly> findAllProjectedBy();
    

    在多个投影的情况下,

    List<Projection1> findBy(Projection1.class);
    List<Projection2> findBy(Projection2.class);
    List<Projection3> findBy(Projection2.class);
    

    查看有关动态投影的更多详细信息here

    【讨论】:

    • 它在 JPA repo 接口中给出编译错误。返回类型与 JpaRepository.findAll(). 不兼容
    • 哇,好用,谢谢。如果我在同一个仓库中有另一个投影接口怎么办。如果您可以分享一些链接,那将会很有帮助。
    • 我会接受答案,但我不清楚,因为有多个预测如何处理它。
    • 它不会编译,因为它不符合 Overload 的条件。
    • 我没有问题接受答案。但与此相关的问题仍然存在。我想看看其他人可以对此提供一些想法。
    猜你喜欢
    • 2012-10-19
    • 2017-03-03
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    相关资源
    最近更新 更多