gpt4 book ai didi

java - hibernate - 禁用 MySQLIntegrityConstraintViolationException

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:38 27 4
gpt4 key购买 nike

有没有办法在插入/删除期间禁用此功能?

情况:我有一个 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;

异常(exception)情况如下:

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 操作,而只是通过同步过程。

最佳答案

您无法在 hibernate 中禁用约束检查,因为 hibernate 显示最初由数据库引发的错误。

您可能正在使用相同的数据库连接来插入数据。但正如您所说,您有多个数据库,您需要为其他数据库获取连接/ session 。如果表格定义良好,您可以插入而无需引用其他书籍。

此外,您需要删除联接,因为这些联接仅适用于同一列中的表。如果书籍和封面不共享相同的数据库(因此也不共享 session ),您需要手动加入书籍和封面。

关于java - hibernate - 禁用 MySQLIntegrityConstraintViolationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com