亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java.sql.SQLIntegrityConstraintViolationException:

java.sql.SQLIntegrityConstraintViolationException:

海綿寶寶撒 2022-06-23 17:06:36
我在休眠中建立了一對多的關系,但是當我嘗試在表中插入一個值時,我得到了我的照片實體中的 FK 不能為空的異常。我的父實體:@Table(name = "library")@Entitypublic class Book {@OneToMany(        fetch = FetchType.LAZY,        mappedBy = "book",        cascade = CascadeType.ALL,        orphanRemoval = true)// setters / getters and other columns 我的子實體@Entity@Table(name = "photos")public class photos{@Id@GeneratedValue(strategy = GenerationType.AUTO)@Column(name = "idphotos")private int id;@ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)@JoinColumn(name = "library_idlibrary")private Book book;// other columns 例外:java.sql.SQLIntegrityConstraintViolationException: Column 'library_idlibrary' cannot be nullcom.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:115)com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:960)com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1116)com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1066)我有插入值的 DAO 對象和控制器:控制器:  @PostMapping( value = "/newBook",consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})public String add(@ModelAttribute("book") @Valid Book book, HttpServletResponse response, HttpServletRequest request,@RequestParam(value = "photo", required = false) List<MultipartFile> photos, @RequestParam(value = "valute",required = false) String valute,BindingResult result) {    if (result.hasErrors()) {        return "addBook";}
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

很可能您還沒有設置從 Photo 到 Book 的反向引用,然后您通過 photoes 集合從 Book 級聯持久/合并操作。當您將元素添加到集合時,您需要維護關系的雙方。例如:


Book book = new Book();

Photo photo = new Photo();

book.addPhoto(photo);

photo.setBook(book);

//notice on the line above we set the backreference of the photo to the book.

hibernateSession.persist(book);

// now it is cascading from book to photo and it will set the foreign keys correctly.


查看完整回答
反對 回復 2022-06-23
  • 1 回答
  • 0 關注
  • 480 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號