【问题标题】:not getting data from multiple mapping table using hibernate没有使用休眠从多个映射表中获取数据
【发布时间】:2015-10-11 09:16:30
【问题描述】:

嗨,我是休眠新手。

我有一个 java web 项目,我在这个项目中使用 spring mvc 和 hibernate,对于数据库,我使用我的 sql。

我面临的问题是:我在 db 中有一个表作为用户,在 java 项目中作为 user.java,我有 2 个其他表引用和 messgaes。在 java 项目中,我有 referenceances.java 和 Messages.java 和我已将映射表创建为 user_referances_mapping(user_id, reference_id) 和 user_messages_mapping(user_id, reference_id)。

并且我在用户和引用表以及用户和消息表之间存在一对多的关系。

当我获取用户数据时,我想同时从references 和messgaes 表中获取数据。

当我使用 "FROM User u LEFT JOIN FETCH u.references WHERE u.contactNo=:contactNo or u.email=:email" 我获取参考表数据。

那么任何人都可以帮助我获得解决方案,我如何同时获取引用表和消息表的数据以及应该如何解决它。

user表中references表和messages表的映射:

@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>();

@OneToMany
@Basic(optional = true)
@BatchSize(size = 5)
@Cascade(CascadeType.ALL)
@Cache(region = IAppConstants.CACHE_MESSAGES, usage = CacheConcurrencyStrategy.READ_WRITE)
@JoinTable(name = "user_messages_mapping", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "message_id") })
private List<Messages> messages = new ArrayList<Messages>();

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;

}

【问题讨论】:

    标签: java mysql spring hibernate spring-mvc


    【解决方案1】:

    使用 @LazyCollection(LazyCollectionOption.FALSE)

    在消息的用户类中使用关系条目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-14
      • 2016-07-24
      • 2018-01-15
      • 2023-03-14
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      相关资源
      最近更新 更多