我有两个JPA实体(账户和个人),具有双向关系:
@Entity
@Table(name = "ACCOUNTS")
@DataCache(enabled = false)
public class Account
{
....
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "ID_OWNER", nullable = false)
private Person owner;
...
}
@Entity
@Table(name = "OWNERS")
@DataCache(enabled = false)
public class Person {
...
@Column(name = "HAS_ACCOUNTS", nullable = false, columnDefinition = "CHAR(1)")
private char hasAccounts;
@OneToMany(mappedBy = "owner")
private Set<Accpunt> comments = new LinkedHashSet<Account>(3);
...
}
当我持久化一个人时,我不想持久化所有帐户,但当我持久一个帐户时,我想更新Person属性hasAccounts,因此我还需要更新这个人。
我做了以下步骤:
Person p = new Person();
em.persist(p);
Account a = new Account();
a.setOwner(p);
p.setHasAccounts('Y');
em.persist(a);
我得到了这个例外:
javax.ejb.EJBTransactionRolledbackException: org.hibernate.PersistentObjectException: detached entity passed to persist: Person
(我用JPA 1.0配合Hibernate)。
尝试以下操作:
Person p = new Person();
Account a = new Account();
p.getComments().add(a);
p.setHasAccounts('Y');
em.persist(p);
问题内容: 我正在使用JPA 2.0并hibernate。我有一个用户类和一个组类,如下所示: 然后,我创建一个用户和组,然后将该用户分配给该组。 我要拥有的是删除组时(当然),该组将被删除,并且该组具有的所有用户-组关系将从USER_GROUP连接表中自动删除,但用户本身不会从USER表。 使用上面的代码,当我删除组时,只有GROUP表中的行将被删除,并且用户在USER_GROUP连接表中仍然具
主要内容:JPA级联持久化示例,输出结果级联持久化用于指定如果实体持久化,则其所有关联的子实体也将被持久化。 以下语法用于执行级联持久性操作 - JPA级联持久化示例 在这个例子中,我们将创建两个相互关联的实体类,但要建立它们之间的依赖关系,我们将执行级联操作。 这个例子包含以下步骤 - 第1步: 在包下创建一个名为的实体类,其中包含属性:,,以及标记为级联规范的类型的对象。 文件: StudentEntity.java - 第2步:
使用Spring Boot 1.4.0和MySql 5.7 我有两个table并且它是单向的@manytomany,但是在角色的父端,我想删除权限hibernate会自动删除它自己和link-table记录: > 权限
谢谢 ----更新----
对于我的任务,我需要使用JPA创建多对多的关系,但是连接表是手动指定的,并带有额外的列。数据结构如下所示: 图书(id、名称、已出版、流派、评级) 作者(身份证、姓名、性别、出生) 图书-作者(id,book-id,author-id) 我创建了这样的实体: 作者: 书: AuthorBook表: 例如,当我删除ID=2的book,它将删除ID=1的author。有没有什么方法可以在不删除已绑定作