按键得到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 取决于您的评论)
我有 类:
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 取决于您的评论)