1

我有以下表格:

BOOK: id,name
USER: id,username,status
BOOK_USER: book_id, user_id

我想在我的应用程序中使用可以设置阅读状态的功能。例子。开始阅读停止阅读。

在我Book.java的介绍USER中,表是ManyToMany

  @JsonIgnore
  @ManyToMany
  @JoinTable(name = "user",
      joinColumns = @JoinColumn(name = "book_id", referencedColumnName = "id"),
      inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"))
  public List<User> users;

在我的 User.java

  @ManyToMany(mappedBy = "users")
  public List<Book> bookList;

当用户在开始阅读时设置停止阅读时,我想更新用户表。这个方法是从我的BookController.java更新方法中调用的。

  public void changeReadingStatus() {
    for (User user : users) {
      user.setStatus("Finished Reading");
      user.update();
    }
  }

我收到一个错误

Caused by: io.ebean.DataIntegrityException: Error when batch flush on sql: insert into BOOK_USER (book_id, user_id) values (?, ?)
        at io.ebean.config.dbplatform.SqlCodeTranslator.translate(SqlCodeTranslator.java:44)
4

1 回答 1

0

我认为你应该这样配置

@ManyToMany
@JoinTable(name = "BOOK_USER",
    joinColumns = @JoinColumn(name = "book_id"),
    inverseJoinColumns = @JoinColumn(name = "user_id"))
public List<User> users;



@ManyToMany(mappedBy = "users")
public List<Book> bookList;

更多信息在这里

于 2017-08-18T01:53:22.093 回答