java - 如何使用 @OrderBy 对 Hibernate 中的复合键之一进行排序

标签 java hibernate sorting sql-order-by composite-key

我有两个类(class)CourseStudentStudent 类使用 firstNamelastName 作为复合键。我想在 Course 类中使用 @OrderBy("firstName ASC"),但出现错误“未找到 @OrderBy 子句的属性:Student.firstName”

如何对其中一个组合键(例如 firstName)进行排序?

public class Course{
    @OneToMany(mappedBy="course")
    @OrderBy("firstName ASC")  
    // Error: property from @OrderBy clause not found: Student.firstName, why?
    private List<Student> students;
.....
}


public class Student{
    @Id
    @Column(name="first_name")
    private String firtName;
    @Id
    @Column(name="last_name")
    private String lastName;

    @ManyToOne
    @JoinColumn(name="course_id")
    private Course course;
.....
}

最佳答案

您将其拼写错误为 firtName - 注意 s 丢失了。解决这个问题,很可能一切都会好起来的。

[已编辑]

万一它仍然无法正常工作。尝试将其替换为 @EmbeddedId。就像下面这样,

public class Student implements Serializable{
    @EmbeddedId
    private StudentPK name;

    @ManyToOne
    @JoinColumn(name="course_id")
    private Course course;
    .....

    @Embeddable
    public static class StudentPK implements Serializable {
        @Column(name="first_name")
        private String firtName;

        @Column(name="last_name")
        private String lastName;

        ....
    }
}

然后它应该可以使用,

public class Course{
    @OneToMany(mappedBy="course")
    @OrderBy("name.firstName ASC")  
    private List students;
    .....
}

关于java - 如何使用 @OrderBy 对 Hibernate 中的复合键之一进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6578817/

相关文章:

Java 卡类

java - 如何处理查询中没有值且数据类型为整数的字段返回的空值

java - 如何在不更改数据库架构的情况下将 UrlType 从 Hibernate 3.6 迁移到 4.3?

swift - 订购 NSURL 数组

java - Jclouds 使用 SLF4j + log4j 而不是 SLF4J + logback 进行日志记录

java - 与数据库的连接限制和应用程序中的 Java 线程数

java - 在 Java 中将 String[] 的所有元素转换为 int[] 的 Mapreduce 方法?

mysql - Spring 数据JPA : findOne with a unique key

linux - 不同顺序的多重排序

c - C中基数排序的不同基础