【发布时间】: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 查询或休眠条件都有自己的方式来表示连接和获取类型。