Переход в спящий режим @отображение ManyToOne

#java #spring-boot #hibernate #spring-data-jpa #hibernate-mapping

#java #весенняя загрузка #впасть в спящий режим #весна-данные-jpa #отображение в спящий режим #спящий режим #spring-data-jpa

Вопрос:

Я использую однонаправленное отображение @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 не является основным ключом. Это просто составной ключ.

Если нет, то я получаю следующую ошибку 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. Если нет, то я получаю следующую ошибку Field 'policy_reference_id' doesn't have a default value

Ответ №1:

Поскольку вы упомянули insertable = false здесь:

@JoinColumn(name = «policyReferenceId», referencedColumnName = «policyReferenceId», обнуляемый = false, вставляемый = false, обновляемый = false)

режим гибернации позволит вашей базе данных обрабатывать вставленное значение самостоятельно. В этом случае вам необходимо установить значение по умолчанию для этого столбца в структуре таблицы БД

также обратите внимание на updatable = false , который позволит вам вставлять новые значения только для этих столбцов