我还有另一个休眠问题。我正在尝试接收所有具有最新消息的项目。为此,我尝试获取所有消息,按项目 ID 对它们进行分组,并在更新的列上应用 max 函数。我的查询构建如下所示:
query.select(from).orderBy(builder.desc(from.get(Message_.UPDATED))).multiselect(from.get(Message_.ID),builder.max(from.get(Message_.UPDATED))).groupBy(from.get(Message_.PROJECT));
但我收到一个例外,
[cause=org.hibernate.PropertyNotFoundException: no appropriate constructor in class: de.ls5.wt2.Message]
它无法将结果转换回消息实体。我必须定义一个适当的构造函数吗?那将是非常不幸的,因为它包含其他实体,使得查询非常困难。并且使用上述查询加入所有具有 jointype 权限的消息不起作用,不支持 sicne jointype 权限。有什么建议如何获得具有上述查询结果的 id 的消息实体列表?
任何帮助都将不胜感激。
编辑:消息类:
@Entity
public class Message {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
private Date created;
private Date updated;
@OneToOne
private User creator;
@OneToOne
private Project project;
private String content;
public Message() {
}
//getter and setter
}