【发布时间】:2015-09-18 18:19:44
【问题描述】:
嗨,我是休眠新手。
我有一个 java web 项目,我在这个项目中使用 spring mvc 和 hibernate,对于数据库,我使用我的 sql。
我面临的问题是: 我在 db 中有一个表作为用户,在 java 项目中有一个表作为 user.java 我有另一个表引用,在 java 项目中我有 referenceances.java 我已经创建了一个映射表作为 user_referances_mapping(user_id, referance_id)。
我在用户和引用表之间有一对多的关系。
现在,当我尝试获取用户数据时,它会提供用户表列数据,但不提供参考数据,并且仅返回参考表的空列表。
另一方面,我也有类似的映射表,其中包含类似角色的用户表、仅具有一对多映射的地址,并且从这些表中检索数据。
那么任何人都可以帮助我获得解决方案,这就是为什么我没有使用一对多关系获取引用表的数据以及应该如何解决它。
用户表中引用表的映射:
@OneToMany
@Basic(optional = true)
@BatchSize(size = 5)
@Cascade(CascadeType.ALL)
@Cache(region = IAppConstants.CACHE_REFERANCES, usage = CacheConcurrencyStrategy.READ_WRITE)
@JoinTable(name = "user_referances_mapping", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "referance_id") })
private List<Referances> referances = new ArrayList<Referances>();
public List<Referances> getReferances() {
return referances;
}
public void setReferances(List<Referances> referances) {
this.referances = referances;
}
UserDao 类函数:
public User getC2SUserByContactNoOrEmail(final String value) throws ApplicationException {
try{
@SuppressWarnings("unchecked")
Query query = currentSession().createQuery(
IQueryConstants.FETCH_USER_BY_CONTACTNO_OR_EMAIL);
query.setParameter("contactNo", value);
query.setParameter("email", value);
return (User) query.uniqueResult();
}catch(Exception e){
throw new ApplicationException(
"Issue occurred while fetching user by: " + value, e);
}
//return null;
}
FETCH_USER_BY_CONTACTNO_OR_EMAIL = "来自用户 WHERE contactNo=:contactNo or email=:email";
【问题讨论】:
-
请分享您实际查询的代码。
-
我已经编辑了帖子,请查看它的实际查询功能
标签: java mysql sql-server spring hibernate