「User」と「Document」の2つのエンティティクラスがあります。各ユーザーには、実際には2つのリストである受信ボックスと送信ボックスがあり、各ドキュメントは複数の受信ボックスと送信ボックスのユーザーに存在する場合があります。これが私のクラスです:
@Entity
public class User {
@Id
private Long id;
@ManyToMany(mappedBy = "userinbox", cascade=CascadeType.ALL)
private List<Document> inbox = new ArrayList<Document>();
@ManyToMany(mappedBy = "useroutbox", cascade=CascadeType.ALL)
private List<Document> outbox = new ArrayList<Document>();
}
@Entity
public class Document {
@Id
private Long id;
@ManyToMany(cascade=CascadeType.ALL)
private List<User> userinbox = new ArrayList<User>();
@ManyToMany(cascade=CascadeType.ALL)
private List<User> useroutbox = new ArrayList<User>();
}
プログラムを実行してドキュメントをユーザーの受信トレイに割り当てようとすると(またはその逆)、次のエラーが発生します。
Error Code: 1364
Call: INSERT INTO DOCUMENT_USER (userinbox_ID, inbox_ID) VALUES (?, ?)
bind => [2 parameters bound]
Internal Exception: java.sql.SQLException: Field 'useroutbox_ID' doesn't have a default value
Query: DataModifyQuery(name="userinbox" sql="INSERT INTO DOCUMENT_USER (userinbox_ID, inbox_ID) VALUES (?, ?)")
生成された関連付けテーブルは次のようになります。
DOCUMENT_USER
useroutbox_ID | outbox_ID |userinbox_ID | inbox_ID
このような多対多の関係にデフォルト値を割り当てるにはどうすればよいですか?2つの関連付けテーブルを作成する方がよいでしょうか->1つは受信トレイの関係用、もう1つは送信トレイの関係用です。どうすればそれを達成できますか?この問題に対する他の解決策は?
どんな助けでも高く評価されます-事前に感謝します!