0
我有问题,我无法找到解决方案。我有两个一对多的关系。如何从一位父母中检索所有的孩子
UserEntity是父类 - 这个类有一个孩子的父母。该类也是一个自引用类。
@Entity
@Table(name = "user")
@Component
public class UserEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "user_id")
private Integer id;
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="checker_id")
private UserEntity checker;
@OneToMany(mappedBy="checker", orphanRemoval=true, cascade = CascadeType.ALL)
private Set<UserEntity> setters = new HashSet<UserEntity>();
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="setter")
private Set<Module> sModule = new HashSet<Module>();
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="checker")
private Set<Module> cModule = new HashSet<Module>();
所以在课堂上,与作为父母的Checker作为孩子的一对多关系。反过来,Checker和Setter都是Module类的父母。设置者将负责设置模块,而检查者将检查它是否正确。所以两者都与相同的模块相关联。
模块
@Entity
@Table(name = "modules")
@Component
public class Module implements Serializable{
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="user_id", insertable=false, updatable=false)
private UserEntity setter;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="checker_id", insertable=false, updatable=false)
private UserEntity checker;
///getters and setters
所以每个用户我想列出与之相关的模块。因此,在设置器部分,模块将显示在其特定页面上,而在检查器部分,相应模块也将列出。
我试图通过获取id的用户并自动获取模块来做到这一点。在这种情况下,父母是setter(我正在使用setsModule)。但该方法返回null。
@Transactional
@SuppressWarnings("unchecked")
public UserEntity getWithModules(Integer id){
//Retrieve User
Criteria crit = getCurrentSession().createCriteria(UserEntity.class);
crit.add(Restrictions.eq("id", id));
UserEntity userEntity = get(crit);
//Retrieve the modules for the setter
crit = getCurrentSession().createCriteria(Module.class);
crit.add(Restrictions.eq("id", id));
crit.addOrder(Order.asc("moduleId"));
Set<Module> sModule = new LinkedHashSet<Module>(crit.list());
userEntity.setsModule(sModule);
return userEntity;
}
以上
public T get(Criteria criteria) {
return (T)criteria.uniqueResult();
}
我要对这个正确的方式还是我必须将它设置不同的方法的DAO标准码?我会对我缺少的东西有所洞察。
嗨,谢谢你的建议。我创建了一个通过id获取用户的方法,并使用 - userEntity.getsModule返回用户。用模块请求用户导致错误 - 必需整数参数'userId'不存在 – user2259555 2013-05-04 10:46:51