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

关联的Hibernate自定义连接子句

梁丘凯定
2023-03-14
问题内容

我想将2个使用hibernate注释的实体与一个自定义连接子句关联起来。该子句具有通常的FK / PK相等性,但FK为null时也是如此。在SQL中,这类似于:

join b on a.id = b.a_id or b.a_id is null

从我阅读的内容中,我应该在所有者实体上使用@WhereJoinTable批注,但是我对如何指定此条件感到困惑……尤其是它的第一部分-指的是联接实体的ID。

有人有例子吗?


问题答案:

这是一个使用标准父/子范例的示例,我认为应该使用基本的@Where注释来工作。

public class A {
  ...
  @ManyToOne(fetch = FetchType.EAGER) // EAGER forces outer join
  @JoinColumn(name = "a_id")
  @Where(clause = "a_id = id or a_id is null") // "id" is A's PK... modify as needed
  public B getB() { return b; }

}

public class B {
  ...
  @OneToMany(mappedBy = "b")
  public List<A> getA() { return a; }
}


 类似资料:
  • 从数据传输对象(DTO)到具有双向一对多关联的Hibernate实体执行MapStruct映射的最佳方法是什么? 假设我们有一个,其中链接了多个类型为的评论: 相应的Hibernate实体<代码>书籍<代码>与<代码>评论<代码>有一对多关联: 请注意,本书的方法还通过调用来双向设置关联,这是Hibernate专家推荐的(例如,Thorben Janssen的“Hibernate Tips:如何映

  • 一、本功能说明 可以自动批量的将内容里面的关键词语加上超链接 二、子功能导航 1.添加连接 2.管理连接 三、功能详解 1.添加规则 1).如何进入本功能 导航栏 选择扩展 -> 菜单栏 选择关联连接 -> 添加关联连接 2).界面解释 点击后弹出如下界面 界面详述 1). 关联连接名称: 您可以需要添加连接的关键字 2). 关联连接网址: 该关键字对应的网址 2.管理连接 1).如何进入本功能

  • 假设有一个具有以下结构的基本SQL db: 客户ID 姓名 邮编 电子邮件 订单ID 客户ID 描述 项目ID 订单ID 名称 成本 所以一个客户可以有很多订单,一个订单可以有很多项目。 要运行什么最合适的LINQ查询来实现以下结果,其中订单项名称结果是逗号分隔的字符串: 客户名称|客户电子邮件|订单项目名称 因此,订单表实际上就像客户和订单项表之间的链接表。然后,我想将与所有订单关联的所有项目的

  • 关联是一个或多个模型之间的关系。 关联的类型: hasOne(多对一) hasMany(多对多) extendsTo(一对一)

  • 在我的应用程序中,用户和首选项实体之间存在多对多关联。由于连接表需要一个额外的列,因此我必须将其分解为2个一对多的关联: 用户实体: 偏好实体: 用户首选项实体: 为了更新其中一个首选项,我循环浏览用户的一组首选项,并更新值如下: 我已经确认,我试图更新的用户变量在代码运行后确实包含新值。更奇怪的是,当重定向发生时,该值会在网页上更新,但数据库不会更新!这是我用来做更新的代码,这个类用@Trans

  • 我有一个关于Hibernate ManyToOne协会的问题。 我有一个产品实体映射如下: 所以你怎么能看到我们与ProductClass表的关系。和FK我们存储在产品表中。当我创建查询,选择产品的特定类别和价格我有下一个this_: 我接下来的问题是:如何避免Product和ProductCategory这两个表的内部联接? 我的标准DAO代码:<代码>标准。createAlias(“类别”、“