Java Hibernate@manytone映射
我正在使用单向@manytone映射。代码如下所示Java Hibernate@manytone映射,java,spring-boot,hibernate,spring-data-jpa,hibernate-mapping,Java,Spring Boot,Hibernate,Spring Data Jpa,Hibernate Mapping,我正在使用单向@manytone映射。代码如下所示 public class PolicyCatalogEntity extends BaseEntity { @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "policyReferenceId", referencedColumnName = "policyReferenceId", nullable
public class PolicyCatalogEntity extends BaseEntity {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "policyReferenceId", referencedColumnName = "policyReferenceId",
nullable = false, insertable = false, updatable = false)
private PolicyConfigDetailsEntity policyConfigDetailsEntity;
@NotBlank
private String lobName;
}
我的感觉是这样的
public class PolicyConfigDetailsEntity extends BaseEntity implements Serializable {
@NotNull
private Long policyReferenceId;
@NotBlank
private String policyName;
private boolean isActive;
}
是否需要在PolicyCatalogEntity
中特别添加列policyReferenceId
PS:policyReferenceId
不是主键。这只是一个组合键
如果不是,那么我得到以下错误
字段“policy\u reference\u id”没有默认值
Hibernate:
insert
into
policy_catalog
(created_at, created_by, last_modified_by, updated_at, version, end_date, is_active, lob_name, lob_ref_id_type, start_date, tnc_url)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
因为您提到了
insertable=false
在这里:
@JoinColumn(name=“policyReferenceId”,ReferenceColumnName=“policyReferenceId”,
nullable=false,insertable=false,Updateable=false)
hibernate将让db自己处理插入的值。
在这种情况下,必须在db表设计中为该列设置默认值
还要注意
updateable=false
,它只允许您为该列插入新值如果没有,则我将得到以下错误字段“policy\u reference\u id”没有默认值