有沒有辦法在INSERT/DELETE期間禁用這個?休眠 - 禁用MySQLIntegrityConstraintViolationException
情況: 我有一個masterDB和一個library1DB和library2DB。
library1DB和library2DB是兩個獨立的數據庫,但具有相同的模式,因爲每個庫都必須有自己的數據庫。現在我們有一個masterDB,它是所有庫(library1DB和library2DB)中所有數據的聚合版本,仍然記下它們各自的ID並將它們映射到它們的庫ID。
這是我在masterDB中的書模型的結構?
Book.java
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long masterId;
@Column
private long id;
@Column
private String title;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "book")
private List<BookCoverHistory> bookCoverHistory;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "LIBRARY_ID")
private Library library;
這是所有好,很好。
但是在我的BookCoverHistory插入數據時,我得到下面的異常。
BookCoverHistory.java
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long masterId;
@Column
private long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BOOK_ID")
private Book book;
@Column
private String desc;
這裏的例外:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`master_db`.`book_cover_history`, CONSTRAINT `FK_10ggatm9ptqayo4naj23329rc` FOREIGN KEY (`book_id`) REFERENCES `book` (`master_id`))
所以我想,我只是禁用的約束,因爲我不是很具體的給他們,因爲我剛剛聚集我的庫中的數據到masterDB,並且不會手動執行CRUD操作,而只是通過同步過程。