使用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-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询