具有多个元素的 Hibernate 包
我有一个包,其结构如下所示:
<bag name="foo" fetch="select" table="table_of_foos">
<key column="foo_ids"/>
<many-to-many class="Bar" column="bar_ids"/>
</bag>
我的“table_of_foos”表有两列:“foo_ids”和“bar_ids”,这两列都不唯一。我想向该表添加另一列,该列包含有关 foos 与 Bars 关系的一些信息,以便我的表可以包含三列。然后,我希望能够在我的网络应用程序中访问此信息。
不幸的是,我似乎无法向包中添加属性或元素。我想做的是这样的:
<bag name="foo" fetch="select" table="table_of_foos">
<key column="foo_ids"/>
<many-to-many class="Bar" column="bar_ids"/>
<element column="still_valid" type="integer"/>
</bag>
完成此任务的最佳方法是什么?
I have a bag whose structure looks like this:
<bag name="foo" fetch="select" table="table_of_foos">
<key column="foo_ids"/>
<many-to-many class="Bar" column="bar_ids"/>
</bag>
My "table_of_foos" table has two columns: "foo_ids" and "bar_ids", neither of which is unique. I want to add another column to this table that holds some information about the relationship of foos to bars, so that my table would hold three columns. Then, I want to be able to access this information in my webapp.
Unfortunately, it doesn't seem as if I can add a property or an element to the bag. What I want to do is something like this:
<bag name="foo" fetch="select" table="table_of_foos">
<key column="foo_ids"/>
<many-to-many class="Bar" column="bar_ids"/>
<element column="still_valid" type="integer"/>
</bag>
What is the best way to accomplish this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您的连接表需要除(复合)主键之外的附加列,您必须实现附加连接类。
连接类(需要复合主键 - 作为静态内部类实现)描述如下
将您的映射重写为
And FooBar 映射
如果需要,您还可以映射复合元素而不是连接类(A 组件元素不需要(复合)主键,并且将其生命周期绑定到其所属实体实例的生命周期)
创建复合元素(现在没有标识符)
并定义以下内容 。映射
If your joined Table needs an additional column other than its (composite) primary-key, you must implement an additional joined class.
The joined class (which needs a composite primary key - implemented as a static inner class) is described as follows
re-write your mapping as
And FooBar mapping
If you want, you can also map a composite element instead of a joined class (A component element does not need a (composite) primary key and has its has its lifecycle bound to that of its owning Entity instance. Keep this in mind)
Create you composite element (now without identifier)
And define the following mapping
我无法按照 Arthur Ronald FD Garcia 编写的方式使这些映射正常工作。
此代码不起作用并导致 MappingException。
无效的尝试
我能够通过以下方式让它工作。
有效尝试
另外:
如果 nHibernate 尝试更新您的集(即使您没有修改它),请尝试覆盖
GetHasCode 和
Equals
方法。更多信息。I wasn't able to get these mapping to work as written by Arthur Ronald F D Garcia.
This code didn't work and resulted in a MappingException.
Invalid Attempt
I was able to get it working with the following.
Valid Attempt
Additionally:
If nHibernate tries to update your set even if you don't modify it, try overriding the
GetHasCode
andEquals
methods. More information here.