我有课程:
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));
但没有得到:(
答案 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类)