【问题标题】:How to specify join type in hibernate entity如何在休眠实体中指定连接类型
【发布时间】:2018-01-05 09:52:07
【问题描述】:

我想在两个休眠实体上指定连接类型

`
@Entity
@Table(name = "b_template_control")
public class TemplateControl {
    @Column(name = "id")
    private Long id;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.DETACH)
    @JoinColumn(name = "back_validation_id", nullable = false, insertable 
    = false, updatable = false)
    private ValidationRuleBack validationRuleBack;
}
`

如您所见,我们有@ManyToOne 关系,默认情况下hibernate 创建INNER JOIN 查询,但我需要LEFT JOIN。问题是如何使用注释指定连接类型。

回答 它是 nullable = false,那么左连接与内连接有什么不同呢?

【问题讨论】:

  • nullable = false,那么左连接和内连接有什么不同呢?
  • 其实这是个问题,谢谢。对于将来我想问一下,关于现有的注释来指定 Join 类型。那些存在吗?
  • 如果你让 Eager fetch 完成这项工作,那么 hibernate 将自动确定连接类型。如果您自己编写查询(并且可能还使用延迟获取),您可以自己指定连接类型。但是如何查询取决于您使用什么查询:原生 SQL 查询、HQL、JPA Criteria API 查询或休眠条件都有自己的方式来表示连接和获取类型。

标签: java hibernate join


【解决方案1】:

请参考以下链接。

https://docs.jboss.org/hibernate/core/3.3/api/org/hibernate/FetchMode.html

连接类型 FetchMode 表示,查询将使用外连接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多