hibernate @onetomany FK未设置

时间:2012-05-12 19:12:48

标签: java hibernate

我有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(用户);

用户已保存,书籍已保存 但是在book表中,没有设置user_id。并保留为NULL。

为什么会这样。

感谢。

1 个答案:

答案 0 :(得分:1)

您没有显示您的代码,但可能未填充连接表,因为您忘记初始化该书的用户字段。在双向关联中,所有者方是没有mappedBy属性的一方,JPA用它来知道id是否存在关联。