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