使用Hibernate反向工程通过数据库表自动生成实体类和映射文件的时候,表之间的关联关系的方向怎么确定?
举例来说,我有两个表,一个students,一个class。多个学生可以在一个班级中,比如通过classID进行两个表之间的关联。假设这个constriant我在生成数据...
举例来说,我有两个表,一个students,一个class。多个学生可以在一个班级中,比如通过classID进行两个表之间的关联。假设这个constriant我在生成数据库的时候已经通过sql设置好了。那么,如果我使用Hibernate反向工程通过数据库表自动生成实体类和映射文件,关联关系是怎样的呢?hibernate是如何确定的呢?
1-是students对class的单向many-to-one?
2-是class对students的单向one-to-many?
3-双向的?
谢谢回答我的大侠。解决疑难善莫大焉,一点分数不成敬意。 展开
1-是students对class的单向many-to-one?
2-是class对students的单向one-to-many?
3-双向的?
谢谢回答我的大侠。解决疑难善莫大焉,一点分数不成敬意。 展开
2个回答
展开全部
反向工程会自动把表之间的constriant映射配置到对应的 映射文件中。如
楼主表述一个class中可以存在多个students。关系的控制反转是由class来控制的。所以在class.hbm.xml 里边<set><key></key><one-to-many></one-to-many></set>.
楼主表述一个class中可以存在多个students。关系的控制反转是由class来控制的。所以在class.hbm.xml 里边<set><key></key><one-to-many></one-to-many></set>.
更多追问追答
追问
你好~从你的回答看,你是认为最后生成的映射关系是class对student的one-to-many关系了。可是你是怎么确定的呢?你为什么说“楼主表述一个class中可以存在多个students。关系的控制反转是由class来控制的”?hibernate怎么知道我不是想要从student到class的many-to-one呢?
追答
在关联关系当中 我们一般都是交由 多的一方来控制这种关联关系。
在你所描述的这个里边 多的一方是不是 students?所以针对students来说 控制翻转的权限在于students 也就是inverse=“true”,
在的节点时候 才能配置 inverse这个属性!
如果像你理解的第二种配置 那么这种关联关系就不在由 多的一方(studets)来控制了。
hibernate会较优自动实现。而不是采取第二种方式 如果硬要用第二种也可行 只是hibernate就是这么个机制。希望我的回答对你有所帮助。
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
展开全部
Hibernat关联关系有单双向一对多,多对一,还有多对多。
一对多:即在一的一方配置多的集合。多对一:就是在多的一方配置一的对象。
然后就是配置class.hbm.xml文件了。
这是在多的一方配置:
<many-to-one name="admingroup" class="com.entity.AdminGroup" lazy="false">
<column name="adgid"></column>
</many-to-one>
在一的一方:
<set name="admins" table="admin" inverse="true" fetch="select">
<key>
<column name="adgid"></column>
</key>
<one-to-many class="com.entity.Admin"/>
</set>
一对多:即在一的一方配置多的集合。多对一:就是在多的一方配置一的对象。
然后就是配置class.hbm.xml文件了。
这是在多的一方配置:
<many-to-one name="admingroup" class="com.entity.AdminGroup" lazy="false">
<column name="adgid"></column>
</many-to-one>
在一的一方:
<set name="admins" table="admin" inverse="true" fetch="select">
<key>
<column name="adgid"></column>
</key>
<one-to-many class="com.entity.Admin"/>
</set>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询