Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jpa持久化(或查找)对象不会保存它封装的对象列表_Java_Jpa - Fatal编程技术网

Java 使用jpa持久化(或查找)对象不会保存它封装的对象列表

Java 使用jpa持久化(或查找)对象不会保存它封装的对象列表,java,jpa,Java,Jpa,假设我们在关系数据库中有一个表“Book”,该表由一个表“Page”引用。一本书包含一页或多页,一页属于一本书 在JPA中,该关系在实体类中定义如下 class Book: @OneToMany(mappedBy = "book") private List<Page> pageList; class Page: @JoinColumn(name = "book", referencedColumnName = "id") @ManyToOne private Book book;

假设我们在关系数据库中有一个表“Book”,该表由一个表“Page”引用。一本书包含一页或多页,一页属于一本书

在JPA中,该关系在实体类中定义如下

class Book:
@OneToMany(mappedBy = "book")
private List<Page> pageList;

class Page:
@JoinColumn(name = "book", referencedColumnName = "id")
@ManyToOne
private Book book;

您需要添加
@OneToMany(mappedBy=“book”,cascade=CascadeType.PERSIST)

对于JPA的
OneToMany
,默认情况下不支持任何操作。

您需要添加
@OneToMany(mappedBy=“book”,cascade=CascadeType.PERSIST)

对于JPA的
OneToMany
,默认情况下不允许任何操作。

请显示您的课程正文和页面。它应该按预期工作,因此您的实体可能存在其他错误。请显示您的类正文和页面。它应该按预期工作,因此您的实体可能存在其他一些错误。
public void add(Book book) throws TestException
{
    try {
        em = getEmf().createEntityManager();
        EntityTransaction tr = em.getTransaction();
        tr.begin();
        em.persist(book);
        tr.commit();
        em.close();
    } catch (PersistenceException pex) {
        throw new TestException(
            "This book already exists.", pex);
    }
}