问题在标题中:
如何将多对多关系表作为实体?
我会说,你的问题很合理。看看这个文档部分:第24章最佳实践。摘录:
不要使用外来关联映射:
真正的多对多关联的实际测试案例很少见。大多数时候,您需要存储在“链接表”中的其他信息。在这种情况下,最好将两个一对多关联用于中间链接类。实际上,大多数关联是一对多和多对一的。因此,在使用任何其他关联样式时,您应谨慎进行。
我们正在处理的方法是引入配对对象。因此,如果有Employee
很多Contacts
,我们就可以拥有EmployeeContact
。这样,我们可以收获很多,因为我们可以使用更多/新的属性(IsMain,IsActive等)来丰富EmployeeContact。
在这种情况下,双方的映射是
one-to-many
(设置) EmployeeContactsone-to-many
(已设置) EmployeeContactsmany-to-one
(相关) 员工many-to-one
(关系) 联系方式因此,最后,映射是正常的,但是我们可以使用子查询等搜索Employee或Contact。
注意:在这种情况下,如果配对表具有自己的替代密钥,例如EmployeeContactId,则是合适的。 它可以随时添加..例如,带有身份…
我有两个类:< code>User和< code>UserProfile。 用户类别: 用户配置文件类: 当我使用此代码时,我在具有多对多关系的表用户配置文件中获得重复的实体。我使用 函数来保存对象。我做错了什么? 然后我删除 cascadeType,出现错误:对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例。 Hibernate日志:
我试图使用Hibernate标准来选择,使用多对多关系中相关的表。n-m表有一些附加列,而不仅仅是每个表的ID。 java.lang.IllegalArgumentException:无法在此ManagedType[User]上找到具有给定名称[UserRolesList.Role]的属性 我已经为这种情况尝试了许多选择,比如加入,但仍然无法使其工作。
我在hibernate中搜索建立关系的各种可能性,遇到了下面的代码片段
问题内容: 我有实体类A和C。它们正在映射表tblA和tblC,并且它们之间具有多对多关系,而tblB可以在它们之间进行映射。tblB包含A_ID,C_ID和SetDate,最后一个是它的设置日期,因此是关系的属性。我的问题是,如何最好地映射此属性?目前,它们尚未映射,如下所示: A: C: 我应该如何从中获取tblB.SetDate? 干杯 问题答案: 据我所知, 不可能 以这种方式映射它,您必
我有两个实体类订单和产品具有多对多关系(多个订单可能具有相同的产品,只要库存不是空的,并且一个订单可能包含多个产品)如下: 以下是用于插入订单和产品的Dao。产品是预定义的,我只需要更新它们的数量。订单将作为新订单插入。必须生成product\u order relationship表,并将数据作为order和product中的主键插入。 在这个场景中,数据被正确地插入到所有三个表中。但当我尝试插
如果在中只有一组,这将非常好地工作。ASSESSMENT_COMMENT只有两列: 它将完美地代表一对多的关系。 现在问题来了: 那么,1)这是Hibernate中已知的bug吗?2)有办法解决这个问题吗?我可以强制Hibernate创建两个映射表,每个映射表一个吗?请记住,我不能更改类来引用(业务逻辑需求)