同じエンティティに対して複数の1対多の関係を構成するにはどうすればよいですか?
男の子とおもちゃの2つのクラスを考えてみましょう。以下のようになります
class Boy {
@OneToMany(mappedBy='ownedBy',fetch=FetchType.EAGER, cascade=CascadeType.ALL)
private List<Toy> bikes;
...
@OneToMany(mappedBy='ownedBy',fetch=FetchType.EAGER, cascade=CascadeType.ALL)
private List<Toy> cars;
...
class Toy {
@ManyToOne
private Boy ownedBy;
...
私はこの設定が間違っていることを知っています。しかし、ここで何を構成する必要があるのかわかりません。@OneToMany
と@ManyToOne
注釈の両側にどのような構成を行う必要がありますか?
アノテーションに「mappedBy」を追加する前に、次の例外メッセージが表示されました
java.sql.SQLException: Field 'cars_Id' doesn't have a default value
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2683)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2144)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2444)
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1997)
しかし、注釈に「mappedBy」が追加されていないときに作成された「boy_toy」のような結合テーブルがありました。追加した後、データベースに作成されたテーブルが表示されません。
- アップデート
また、boy_toyテーブルには、boy_id、cars_id、bikes_idの3つの列がありました。ただし、理想的には、boy_idがnullではなく、他のnull許容列のようにする必要があります。しかし、生成されたすべての列はnull許容ではありませんでした。アノテーションから「mappedBy」を削除し、テーブル構造を手動で編集して、cars_idとbikes_idをnull許容にしようとしました。それは不思議のように働いた。
だから今、私が持っている唯一の残りの質問は
null許容列と非null許容列を含む結合テーブルを構成するために休止状態をどのように指示できますか?