【发布时间】:2016-08-24 08:29:33
【问题描述】:
我有一个这样的 SQL 查询:
SELECT h.name, h.created_date, tbl.*
FROM my_table tbl
LEFT JOIN
(SELECT name, max(created_date) created_date FROM my_table GROUP BY name) h
ON tbl.name = h.name;
它返回 my_table 中的行(有多个 for name="")以及该名称的最大 created_date。
有没有办法在 JPQL 查询中复制它?
这里是Entity类的要点,很简单:
@Entity
@Table(name = "MY_TABLE")
@XmlRootElement
public class MyTable implements Serializable {
private BigDecimal tableId;
private String name;
private Date createdDate;
// ...
@Id
@Basic(optional = false)
@Column(name = "TABLE_ID")
@GeneratedValue(generator = "TBL_ID_SEQ")
public BigDecimal getTableId() {
return tableId;
}
@Basic(optional = false)
@Column(name = "NAME")
public String getName() {
return name;
}
@Basic(optional = false)
@Column(name = "CREATED_DATE", insertable = false)
@Temporal(TemporalType.TIMESTAMP)
public Date getCreatedDate() {
return createdDate;
}
// ... getters/setters
}
【问题讨论】:
-
你的课是?因为你知道 JPQL 是面向类/字段而不是表/列
-
我确实知道。老实说,我对 jpa 还很陌生,而且我对 jpql 还不是很熟悉。实体类将是 myTable 并且我尝试加入的名称字段是一个字符串。或许这不是可以直接做的事情?
-
也许我需要另一个只返回最大日期和名称字段的实体类?而不是尝试使用相同的实体