0

私は2つのクラスがあります

@Entity 
@Table(name = "user")
public class User 
@Id
@Column(name = "id")
@GeneratedValue
private int id;

@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
@Cascade({CascadeType.ALL})
private Collection<Book> userBooks;
}
@Entity 
@Table(name = "books")
public class Book
@Id
@Column(name = "id")
@GeneratedValue
private int id;

@ManyToOne
private User user;
}

ここにもう少しコードがあります:

  User user = new User();
    user.setUserName("Gleeb");
    user.setUserPassword("gleeb");
    Book book = new Book();
    book.setTitle("some book ");
    book.setbookType(1);
    user.addUserbook(book);

    userService.save(user);

新しいユーザーを作成して、それに新しい本を追加しようとしています。ユーザーを保存するとき

session.saveOrUpdate(user);

ユーザーが保存され、ブックが保存されますが、ブックテーブルではuser_idが設定されていません。そしてNULLのままになります。

何故ですか。

ありがとう。

4

1 に答える 1

1

コードを表示しませんでしたが、本のユーザーフィールドを初期化するのを忘れたため、結合テーブルにデータが入力されなかった可能性があります。双方向アソシエーションでは、所有者側はmappedBy属性を持たない側であり、JPAがアソシエーションが存在するかどうかを知るために使用するのはこの側です。

于 2012-05-12T19:50:05.177 に答える