0

我正在尝试将一个项目保存在与图书管理员(这是用户的子类)具有多对一关系的数据库中。下面的代码创建了一个表*librarian_item*,它具有librarian_id 和item_id 作为属性。当我尝试保存数据时,程序不打印 *librarian_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;
}

由于 Librarian 是 User 的子类,并且我使用鉴别器来识别 user 表中的每种类型的 User,所以 *librarian_id* 必然是 *user_id*。

我改变了我的代码,因为它在这里讨论。显然,新方法不会创建新表。在表中创建一个新列,该列引用另一个表以建立关系。

4

0 回答 0