按键得到Criteria.list

get Criteria.list by key

我有 类:

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.For 获取所有用户,我在下面的代码

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

但什么也得不到:(

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

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

如果您想查询您的 User class,您需要在其中映射一个字段,并正确使用限制。

这有点复杂,但我认为您应该需要像这样更改标准:

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

你的parentId其实是oldUser。您在 Usert class 中将 OldUser 初始化为 userId(我相信 Usert class 显示用户 class,顶部的 class 显示 OldUser class 取决于您的评论)