我有2个遗留实体
public class Owner {
@Column(name = "board_id")
private Integer board_id;
public Integer getBoardId() {
return board_id;
}
public void setBoardId(Integer board_id) {
this.board_id = board_id;
}
}
public class Board {
private String cableId;
private Integer id;
@Id
@GeneratedValue(generator = "board side_seq_name")
public Integer getId() {
return id;
}
@Column(name = "cable_id")
public String getCableId() {
return cableId;
}
public void setCableId(String cableId) {
this.cableId = cableId;
}
}
Owner
和Board
由owner.board_id = board.id
连接。
我有一个Criteria API查询,它返回所有者的集合,我需要按Owner.Board.cableId
对其进行排序。
因为我无法将子查询放到orderBy
而我无法更改这些实体的JPA映射,所以对我来说似乎并不容易。
请提出任何想法。
答案 0 :(得分:1)
由于您没有发布已有的内容,因此您必须根据需要进行调整。像这样的东西
CriteriaQuery q = ...
Root<Owner> ownerRoot = q.from(Owner.class);
ownerRoot.setAlias("o");
Root<Board> boardRoot = q.from(Board.class);
boardRoot.setAlias("b");
q.where(qb.eq(ownerRoot.get(Owner_.board_id), boardRoot.get(Board_.id));
q.orderBy(qb.asc(boardRoot.get(Board_.cableId)))