Java 未使用hibernate从映射表获取数据
嗨,我刚开始冬眠 我有一个JavaWeb项目,我在这个项目中使用SpringMVC和hibernate,对于数据库我使用sql 我面临的问题是: 我在db中有一个表作为user,在java项目中有一个表作为user.java 我有另一个表引用,在java项目中我有references.java 我创建了一个映射表作为user\u references\u映射(user\u id,references\u id) 我在用户和引用表之间有一对多的关系 现在,当我尝试获取用户数据时,它会给我用户表columns数据,而不是references数据,并且只返回references表的null列表 另一方面,我也有类似的映射表,具有类似于用户表的角色、仅具有一对多映射的地址,并且从这些表中检索数据 那么,有谁能帮我得到解决方案吗?这就是为什么我不能使用一对多关系来获得references表的数据,以及解决方案应该是什么 用户表中引用表的映射:Java 未使用hibernate从映射表获取数据,java,mysql,sql-server,spring,hibernate,Java,Mysql,Sql Server,Spring,Hibernate,嗨,我刚开始冬眠 我有一个JavaWeb项目,我在这个项目中使用SpringMVC和hibernate,对于数据库我使用sql 我面临的问题是: 我在db中有一个表作为user,在java项目中有一个表作为user.java 我有另一个表引用,在java项目中我有references.java 我创建了一个映射表作为user\u references\u映射(user\u id,references\u id) 我在用户和引用表之间有一对多的关系 现在,当我尝试获取用户数据时,它会给我用户表co
@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;
}
通过以下方式获取用户:联系人号码或电子邮件=“从用户,其中联系人号码=:联系人号码或电子邮件=:电子邮件” 如果我是对的,OneToMany关系在默认情况下被定义为“lazy”,这意味着您需要显式地声明您想要获取相关记录 尝试按如下方式修改查询:
FETCH_USER_BY_CONTACTNO_OR_EMAIL = "FROM User u LEFT JOIN FETCH u.referances WHERE u.contactNo=:contactNo or u.email=:email";
请分享你实际查询的代码。我已经编辑了这篇文章,请查看它的实际查询功能。这不起作用,在这行代码中返回(用户)query.uniqueResult();它给出ApplicationException内部异常是什么?请发布完整的堆栈跟踪。该错误是由于其他原因造成的。你的回答奏效了。非常感谢,如果我必须从2个或多个表中获取结果,而不是仅从u.references获取结果,那么可以做什么?
FETCH_USER_BY_CONTACTNO_OR_EMAIL = "FROM User u LEFT JOIN FETCH u.referances WHERE u.contactNo=:contactNo or u.email=:email";