我有一个带有复合主键的表:
public class IdmTenantBoard implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private IdmTenantBoardPK id;
@Column(name="board_display_name")
private String boardDisplayName;
@Column(name="board_name")
private String boardName;
嵌入式类如下所示:
public class IdmTenantBoardPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@Column(name="board_id")
private int boardId;
@Column(name="tenant_id")
private String tenantId;
我用来调用查询的方法如下:
public String getMaxBoardId(){
TypedQuery<String> query = entityManager.createQuery("select o from IdmTenantBoard o order by o.IdmTenantBoardPK.boardId desc",String.class);
query.setMaxResults(1);
List<String> lResults = query.getResultList();
String maxBoardId=null;
if((null!=lResults)&&(!lResults.isEmpty())){
maxBoardId=lResults.get(0);
}
return maxBoardId;
}
我需要什么来使
boardId
以降序排序?我收到以下错误:由以下原因引起:org.hibernate.QueryException:无法解析属性:IdmTenantBoardPK:com.newrubric.idm.common.entities.IdmTenantBoard [从com.newrubric.idm.common.entities.IdmTenantBoard中选择o或通过o.IdmTenantBoardPK进行排序。 boardId desc]
最佳答案
下面的IdmTenantBoardPK
是嵌入式ID的类型,属性的名称是id
:
@EmbeddedId
private IdmTenantBoardPK id;
这就是为什么
o.IdmTenantBoardPK.boardId
不能在查询中使用的原因。代替它,应使用o.id.boardId
。