休眠@ManyToOne映射

时间:2020-10-19 11:19:13

标签: java spring-boot hibernate spring-data-jpa hibernate-mapping

我正在使用单向@ManyToOne映射。代码看起来像这样。

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;
 }

PolicyDetailsEntity看起来像这样

public class PolicyConfigDetailsEntity extends BaseEntity implements Serializable {
    @NotNull
    private Long policyReferenceId;
    @NotBlank
    private String policyName;
    private boolean isActive;
}

我是否需要在policyReferenceId中专门添加列PolicyCatalogEntity

PS:policyReferenceId不是primaryKey。这只是一个复合键。

如果没有,则出现以下错误 Field 'policy_reference_id' doesn't have a default value

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
        (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

1 个答案:

答案 0 :(得分:0)

自从您提到 createSwitchNavigator( { LimitedAccess: { screen: Trial, }, AppScreens: { screen: AppScreens, }, AuthScreens: { screen: AuthScreens, }, }, { initialRouteName: signedIn ? 'AppScreens' : 'AuthScreens', }, ), 在这里:

@JoinColumn(name =“ policyReferenceId”,referencedColumnName =“ policyReferenceId”, nullable = false,可插入= false ,可更新= false)

hibernate将让您的数据库本身处理插入的值。 在这种情况下,您必须为数据库表设计中的该列设置默认值

还要注意insertable = false,它只会让您为该列插入新值