当前位置: 首页 > 面试题库 >

多对多关系的属性(休眠)

广昊昊
2023-03-14
问题内容

我有实体类A和C。它们正在映射表tblA和tblC,并且它们之间具有多对多关系,而tblB则在它们之间进行映射。tblB包含A_ID,C_ID和SetDate,最后一个是它的设置日期,因此是关系的属性。我的问题是,如何最好地映射此属性?目前,它们尚未映射,如下所示:

A:

@ManyToMany(targetEntity=C.class, cascade={ CascadeType.PERSIST, CascadeType.MERGE } )
@JoinTable(name="tblB", joinColumns=@JoinColumn(name="A_ID"), inverseJoinColumns=@JoinColumn(name="C_ID") )
private Collection<C> Cs;

C:

@ManyToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "Cs", targetEntity = A.class )
private Collection<A> As;

我应该如何从中获取tblB.SetDate?

干杯

尼克


问题答案:

据我所知, 不可能 以这种方式进行映射,您必须 切换到“一对多”和“多对一”关系 ,并且将B放在中间。您的日期将是B的属性。

由于缺乏灵活性,因此Hibernate文档建议总体上避免使用“多对多”,并从一开始就使用这两种关系。



 类似资料:
  • 问题内容: 我有实体类A和C。它们正在映射表tblA和tblC,并且它们之间具有多对多关系,而tblB可以在它们之间进行映射。tblB包含A_ID,C_ID和SetDate,最后一个是它的设置日期,因此是关系的属性。我的问题是,如何最好地映射此属性?目前,它们尚未映射,如下所示: A: C: 我应该如何从中获取tblB.SetDate? 干杯 问题答案: 据我所知, 不可能 以这种方式映射它,您必

  • 问题内容: 我的Java bean与我有很多关系。当我使用如下方式定义变量时: 我得到那个错误: 当我使用时,一切似乎都运行良好。 我想问的是,在使用多对多关系时,哪一个关系用于逻辑概念或(因为列表可能有重复项和集合,但是性能和其他问题又如何)? 问题答案: 从关系数据库的角度来看,这是一个集合。数据库不会保留顺序,并且使用a 是没有意义的,它们的顺序是不确定的(除非使用所谓的 索引集合 )。 使

  • 问题内容: 我想使用条件(不是sql查询)从A类获取列表。有可能这样做吗?在这种情况下,投影不起作用。 问题答案: 不幸的是,标准仅允许选择根实体,而不能选择任何连接的实体。因此,如果您的ManyToMany是双向的,它将更加容易。您可以使用等同于 如果这不是一种选择,我认为唯一的方法是使用子查询,从而将等同于 因此,代码如下所示:

  • 我还想知道如何定义每个模型上的关系--你是否需要或者是否可以只在用户上定义关系?

  • 问题内容: 伙计们,我正在努力为我的公司制作一个简单的票证生成系统,以吸引人。目前,我的MSSQL数据库中有一个名为的表,另一个名为的表。 我的应用程序是C#Windows窗体,因此在新的票证生成窗体上,我有许多文本框和一个用于分配工程师的comboBox,由填充。生成票证后,以这种形式输入的所有信息都将与from一起存储。 效果很好,但是后来我的客户要求我添加选项,以便可以在一张票上分配3名工程

  • 问题内容: 我有两个与多对多关联的表。 —数据库片段: 加载 ID 名称 会话 ID 日期 sessionsloads LoadId 的SessionID —hibernate映射片段: 为了从关联表 sessionloads中 删除一个条目,我执行以下代码: 但是,启动后,此代码将保持不变。 删除关联的正确方法是什么? 问题答案: 您需要更新和之间的链接的两端: 实际上,许多开发人员使用防御性方