hibernate - 获取按列排序的惰性列表

标签 hibernate jpa orm entity

这是我的简单情况:

@Entity
@Table(name = "project")
public class Project implements Serializable {

    @Id
    private Long id;

    @OneToMany(mappedBy = "project")
    private List<Author> authors;

    public List<Author> getAuthors() {
        return authors;
    }
}

public class DAO {

    public void getOrderedAuthorsByProject(Project project) {
        return project.getAuthors(); // Line 1
    }
}

在第 1 行中,如何返回按作者实体的特定列排序的作者列表,只需执行 get 操作?

谢谢。

最佳答案

如果您希望排序的属性是作者中的字段(即作者表中的列),那么您可以使用@OrderBy:

@OneToMany(mappedBy = "project")
@OrderBy("surname, forename asc")
private List<Author> authors; 

如果它是嵌套属性,那么您可以使用(Hibernate 特定的,非 JPA)@Sort 注释来进行内存中排序。如果您的作者实体实现了 Comparable 接口(interface),您可以指定 Comparator 或指定 SortType = NATURAL。

http://java.dzone.com/news/sorting-collections-hibernate

关于hibernate - 获取按列排序的惰性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19913450/

相关文章:

java - MySQL Hibernate 中的空指针异常 HQL

java - Hibernate 不包括与另一个实体列表中的实体类型相同的子实体

c# - 如何使用 NHibernate 创建标签系统(多对多)

java - Hibernate with SQLite 无法在数据库创建后第二次运行应用程序

java - 应用函数后在 Hibernate 中搜索属性

java - 升级到 hibernate 6 : Encountered deprecated setting [javax. persistence.lock.timeout],使用 [jakarta.persistence.lock.timeout] 代替

java - Play Framework,OneToOne 关系不起作用

java - 所需的 Hibernate 基本资源详细信息

java - 具有多对多外键的自定义 Hibernate NamingStrategy

java - CriteriaBuilder 查询在使用 fetch 时中断,但在不使用 fetch 的情况下工作