Java SpringJPA:我们如何根据嵌入类中的属性进行排序
我尝试在SO上搜索我的问题,但找不到与我的问题匹配的问题。 让我们举一个简单的例子,其中我有一个实体类和一个复合主键(嵌入)类 实体类:Java SpringJPA:我们如何根据嵌入类中的属性进行排序,java,spring,spring-boot,spring-data-jpa,spring-data,Java,Spring,Spring Boot,Spring Data Jpa,Spring Data,我尝试在SO上搜索我的问题,但找不到与我的问题匹配的问题。 让我们举一个简单的例子,其中我有一个实体类和一个复合主键(嵌入)类 实体类: @Entity(name = "employee") public class EmployeeEntity { @EmbeddedId private EmployeeId employeeId ; @Column(name = "fName") private String fName; @Column(name =
@Entity(name = "employee")
public class EmployeeEntity {
@EmbeddedId
private EmployeeId employeeId ;
@Column(name = "fName")
private String fName;
@Column(name = "lName")
private String lName;
}
存储库类:
@Repository
public interface EmployeeRepository extends JpaRepository<EmployeeEntity, EmployeeId> {
// The below method works and I can see the result sorted by first names
List<EmployeeEntity> findByEmployeeId_EmpIdAndEmployeeId_SsnOrderByFNameDesc(int empId, String ssn);
// However let's say I want to order by start_date desc, I am not able to create the right method name here.
}
@存储库
公共接口EmployeeRepository扩展了JpaRepository{
//下面的方法有效,我可以看到按名字排序的结果
列表findByEmployeeId_EmpIdAndEmployeeId_SsnOrderByFNameDesc(int-empId,String-ssn);
//但是,假设我想按开始日期描述订购,我无法在这里创建正确的方法名称。
}
我的问题在上面的评论中:如何利用JPA的功能(如上图所示按名字排序的方法)按嵌入式id类中的属性排序或使用属性排序?List findByEmployeeId\u EmpIdAndEmployeeId\u SsnOrderByEmployeeIdStartDateDesc(int-empId,String-ssn);
List<EmployeeEntity> findByEmployeeId_EmpIdAndEmployeeId_SsnOrderByEmployeeIdStartDateDesc(int empId, String ssn);
应该可以工作。列表findByEmployeeId\u EmpIdAndEmployeeId\u SsnOrderByEmployeeIdStartDateDesc(int-empId,String-ssn);
应该有效。您必须按照在类中定义查询的方式命名查询。 在下面的
EmployeeId
中,是嵌入id的类型,属性的名称是startDate
,您希望按其进行排序
因此,使用OrderByEmployeeIdStartDateDesc您必须按照在类中定义查询的方式命名查询。 在下面的
EmployeeId
中,是嵌入id的类型,属性的名称是startDate
,您希望按其进行排序
因此,请使用OrderByEmployeeIdStartDateDesc
List<EmployeeEntity> findByEmployeeId_EmpIdAndEmployeeId_SsnOrderByEmployeeIdStartDateDesc(int empId, String ssn);