gpt4 book ai didi

java - 不使用hibernate从多个映射表获取数据

转载 作者:行者123 更新时间:2023-11-29 21:56:52 25 4
gpt4 key购买 nike

嗨,我是 hibernate 新手。

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

我面临的问题是:我在数据库中有一个表作为用户,在java项目中作为user.java,我有另外2个表引用和messgaes。在java项目中我有references.java和Messages.java和我已将映射表创建为 user_referances_mapping(user_id,referance_id) 和 user_messages_mapping(user_id,reference_id)。

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

当我获取用户数据时,我想从引用表和消息表中获取数据。

当我使用“FROM User u LEFT JOIN FETCH u.referances WHERE u.contactNo=:contactNo or u.email=:email”我获取引用表数据。

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

用户表中references表和messgaes表的映射:

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

}

最佳答案

使用@LazyCollection(LazyCollectionOption.FALSE)

与消息的 User 类中的关系条目。

关于java - 不使用hibernate从多个映射表获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33063381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com