【发布时间】:2015-07-17 18:08:06
【问题描述】:
我有 2 个具有 @OneToOne 关系的类:User 和 Player。
用户包含一个玩家:
@Entity
@Table(name = "user")
public class User {
@Column(name = "nickname")
private String nickname;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "id_player")
private Player player;
//getters and setters...
}
我只想用nickname 和player 查询用户,用player 我不想要所有属性,我只想要2 个。
这就是我现在拥有的:
//Projections for the class User
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("id"), "id");
projectionList.add(Projections.property("nickname"), "nickname");
projectionList.add(Projections.property("player"), "player");
Criteria criteria = session.createCriteria(User.class);
criteria.setFirstResult(player.getPvpRank() - 5);
criteria.setMaxResults(11);
criteria.createAlias("player", "p");
criteria.addOrder(Order.asc("p.pvpRank"));
criteria.setProjection(projectionList);
criteria.setResultTransformer(Transformers.aliasToBean(User.class));
我只得到nickname、id 和player,但我怎样才能将投影设置到玩家只得到player.level 而不是所有属性?
【问题讨论】:
-
查看详细解决方案:stackoverflow.com/a/29756903/4560215