Java 使用Hibernate在数据库中插入对象时请求ID的程序

Java 使用Hibernate在数据库中插入对象时请求ID的程序,java,hibernate,spring-mvc,many-to-one,jointable,Java,Hibernate,Spring Mvc,Many To One,Jointable,我试图在数据库中保存一个项目,它与图书管理员(user的一个子类)有很多关系。下面的代码创建一个表*Library\u item*,该表的属性为Library\u id和item\u id。当我试图保存数据时,程序打印no*librarian\u id*。图书管理员对该项目进行了设置,但仍会抛出错误 @ManyToOne(cascade=CascadeType.PERSIST, fetch = FetchType.LAZY) @JoinTable(name = "libraria

我试图在数据库中保存一个项目,它与图书管理员(user的一个子类)有很多关系。下面的代码创建一个表*Library\u item*,该表的属性为Library\u id和item\u id。当我试图保存数据时,程序打印no*librarian\u id*。图书管理员对该项目进行了设置,但仍会抛出错误

    @ManyToOne(cascade=CascadeType.PERSIST, fetch = FetchType.LAZY)
    @JoinTable(name = "librarian_item",
                joinColumns = @JoinColumn(name = "item_id"),
                inverseJoinColumns = @JoinColumn(name = "librarian_id"))
    @NotNull
    @Valid
    private User librarian;
Item类具有以下Hibernate代码:

@OneToMany(cascade=CascadeType.PERSIST)
@JoinTable(name = "librarian_item",
            joinColumns = @JoinColumn(name="librarian_id"),
            inverseJoinColumns = @JoinColumn(name="item_id"))
@Valid
public Collection<Item> getItemList() {
    return itemList;
}
@OneToMany(cascade=CascadeType.PERSIST)
@JoinTable(name=“图书管理员\项目”,
joinColumns=@JoinColumn(name=“Library_id”),
inverseJoinColumns=@JoinColumn(name=“item_id”))
@有效的
公共集合getItemList(){
返回项目列表;
}
由于Library是User的一个子类,我使用鉴别器来识别User表中的每种类型的用户,*Library\u id*必须是一个*User\u id*


讨论时我更改了代码。显然,新方法不会创建新表。将在表中创建一个新列,该列引用另一个表以建立关系。

提供更多详细信息,如错误stacktrace。首先修复映射。getItemList()上不应有JoinTable批注。相反,应该有一个omany(cascade=CascadeType.PERSIST,mappedBy=“library”)thanx,我已经更改了映射,现在工作正常。