按键

时间:2016-10-10 09:05:57

标签: java hibernate criteria

我有课程:

Entity
@Table(name = "oldusers")
public class User implements UserDetails {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
   ......
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "userId", cascade =      CascadeType.ALL)
    List<User> usertList= new ArrayList<>(0);

    public List<User> getUserList() {
        return userList;
    }

@Table(name = "user")
public class Usert implements Serializable {
    int userId;
    int position;
    String name;
    List<Exercise> list = new ArrayList<>(0);
    OldsUser userId;

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "parentid")
    public OldUser getUserId() {
        return this.userId;
    }
}

我需要通过idOldUser获取所有用户。因为我已经编写了以下代码

Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("parentid", idOldUser));

但没有得到:(

2 个答案:

答案 0 :(得分:0)

Restriction.eq方法需要接收映射的字段名称而不是列名称,我不能完全理解映射中的逻辑,但这里有一个应该有效的标准示例:

Criteria criteria = session.createCriteria(Usert.class);
criteria.add(Restrictions.eq("userId", idOldUser));

如果您想查询User课程,则需要在其中映射字段,并正确使用该限制。

答案 1 :(得分:0)

这有点复杂,但我认为你需要改变这样的标准:

Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("userId.id", idOldUser));

你的parentId实际上是oldUser。您在Usert类中将OldUser初始化为userId(我相信Usert类显示User类,顶部的类根据您的注释显示OldUser类)