データベースにエンティティを作成し、外部キーなしで外部キーを更新しようとしています。hibernate:外部キーを持たないエンティティを保存するときの例外
@Entity
public class Business {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int businessId;
@Column
private String businessName;
@ManyToOne()
@JoinColumn(name="billTypeId", nullable=true)
@NotFound(action=NotFoundAction.IGNORE)
private BillType billType;
// getters and setters
}
billType属性がNULL値を持って、私は次の例外になっています:私は、ビジネスオブジェクトを永続化するとbillTypeIdフィールドにゼロ値を持つことができますどのように
Caused by: java.sql.SQLIntegrityConstraintViolationException: (conn:54)
Column 'billTypeId' cannot be null
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:152)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:118)
、billTypeメンバーをnullです
あなたのコードは、データベースによって強制される制約と矛盾します。 NotFoundアノテーション(一貫性のないデータベースを扱うためのハック)を削除し、エンティティを保存する前に請求書タイプを設定するだけです。 –
データベースによって強制される制約はありません。 私はbillTypeを設定して動作させることができます。しかし、まずはBillTypeを使わないでBusinessオブジェクトを保存し、後でそれを設定する必要があります。私の質問はどうですか? –
それは例外ではありません: 'SQLIntegrityConstraintViolationException'です。あなたはほとんど制約が違反されたと思うでしょう。 – Kayaman