求助,Hibernate 一对多List元素 index怎么配置

求助,Hibernate 一对多List元素 index怎么配置,第1张

首先,根据描述user和role是多对多的关系,一般这种情况通过中间userRole表来维护,user与userRole是一对多,并且role与userRole也是一对多。hibernate如果通过配置文件方式:在user配置中设置one-to-many,role配置文件同理;如果通过注解方式:@OneToMany

key column是指在多的一端(Student表)中添加一个名为gradeId的字段,添加的字段的值为当前配置文件中主键的值(即gradeid)。即实现了主外键关联

因为设置了inverse=true,实际上这个字段是在由student进行维护的···

顺便鄙视一下楼上打广告的····

Fetch:

在我们查询Parent对象的时候,默认只有Parent的内容,并不包含childs的信息,如果在Parent.hbm.xml里设置lazy="false"的话才同时取出关联的所有childs内容.

问题是我既想要hibernate默认的性能又想要临时的灵活性该怎么办? 这就是fetch的功能。我们可以把fetch与lazy="true"的关系类比为事务当中的编程式事务与声明式事务,不太准确,但是大概是这个意思。

总值,fetch就是在代码这一层给你一个主动抓取得机会.

Parent parent = (Parent)hibernateTemplate.execute(new HibernateCallback() {

public Object doInHibernate(Session session) throws HibernateException, SQLException {

Query q = session.createQuery(

"from Parent as parent "+

" left outer join fetch parent.childs " +

" where parent.id = :id"

)

q.setParameter("id",new Long(15))

return (Parent)q.uniqueResult()

}

})

Assert.assertTrue(parent.getChilds().size() >0)

你可以在lazy="true"的情况下把fetch去掉,就会报异常. 当然,如果lazy="false"就不需要fetch了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11966884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存