使用条件API按相关实体属性订购JPA实体

时间:2015-04-30 14:18:23

标签: hibernate jpa criteria-api

我有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;
        } 
}

OwnerBoardowner.board_id = board.id连接。 我有一个Criteria API查询,它返回所有者的集合,我需要按Owner.Board.cableId对其进行排序。

因为我无法将子查询放到orderBy而我无法更改这些实体的JPA映射,所以对我来说似乎并不容易。

请提出任何想法。

1 个答案:

答案 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)))