java - 我们如何在 Hibernate 中按日期对结果进行排序?

标签 java mysql hibernate orm hibernate-mapping

我正在使用 Hibernate 从数据库获取 JSON 对象。我希望 JSON 对象应包含最近创建的 VGI 中唯一前两个的所有详细信息。但我不知道如何在不使用 HQL 查询时限制结果集,然后根据创建日期进行排序。它正在从 MySQL 数据库获取所有详细信息。

import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "vgi", catalog = "coworkee5")
public class VGI {
@ManyToOne
@JoinColumn(name = "employee_id", referencedColumnName = "id", insertable = false, updatable = false)
private Employees employees;

public Employees getEmployees() {
    return employees;
}

public void setEmployees(Employees employees) {
    this.employees = employees;
}

@OneToMany(cascade = CascadeType.ALL, targetEntity = VgiGoals.class, mappedBy = "vgi")
private List<VgiGoals> vgiGoals;

public List<VgiGoals> getVgiGoals() {
    return vgiGoals;
}

public void setVgi_goals(List<VgiGoals> vgiGoals) {
    this.vgiGoals = vgiGoals;
}

public VGI() {
}

@Id
@Column(name = "id")
private String id;
@Column(name = "title")
private String vgi;
@Column(name = "employee_id")
private String employee_id;
@Column(name = "created_on")
private String created;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getvgi() {
    return vgi;
}

public void setvgi(String vgi) {
    this.vgi = vgi;
}

public String getEmployee_id() {
    return employee_id;
}

public void setEmployee_id(String employee_id) {
    this.employee_id = employee_id;
}


public String getCreated() {
    return created;
}

public void setCreated(String created) {
    this.created = created;
}

}

最佳答案

添加@OrderBy注释进行排序,如下所示。

@OneToMany(cascade = CascadeType.ALL, targetEntity = VgiGoals.class, mappedBy = "vgi")
@OrderBy("createdOn DESC")
private List<VgiGoals> vgiGoals;

注意:将 createOn 替换为 VgiGoals 类中的日期字段。

为了限制在查询中使用以下方法。

query.setFirstResult(1).setMaxResults(10);

关于java - 我们如何在 Hibernate 中按日期对结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53442339/

相关文章:

java - 模拟 RCP 应用程序的 jar 文件。哪些因素可能会导致其出错?

java - tomcat.dbcp...无法为连接 URL '' 创建类 'null' 的 JDBC 驱动程序

java - gethibernatetemplate().save(object) 不持久化数据

java - 在 Java 中使用 PBEWithHmacSHA256AndAES_256 加密要存储在文件中的密码

java - POI DataFormatter 为日期单元格返回 2 位数字年份而不是 4 位数字年份

java - (随机选择)文件中的名称

php - 在 mysql 中,一行总是在最上面

mysql - 我可以在 MySQL/InnoDB 中关闭事务吗?

java - Liquibase + Hibernate 重命名列

hibernate - 关系所有者在双向关系中意味着什么?