- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经尝试解决这个问题有一段时间了,但我似乎找不到任何有类似问题的人。
我有一个包含多个 LogEntries 的 Person。当我删除这个人时,我仍然想保持日志条目完整。
在 Person.java 中:
@OneToMany(mappedBy = "person", cascade = CascadeType.DETACH)
private List<LogEntry> logEntries;
在 LogEntry.java 中:
@ManyToOne(cascade = CascadeType.DETACH)
@JsonIgnore
private Person person;
有可能做到这一点吗?我收到一个关于外键的持久性错误,这是可以理解的,因为不再有任何关系。但我想知道这是否可能?
tl;博士
我想删除此人,但保留日志条目,但出现持久性错误。
感谢任何帮助。
最佳答案
我认为你错了:
Detached entity objects are objects in a special state in which they are not managed by any EntityManager but still represent objects in the database.
...
...
Marking a reference field with CascadeType.DETACH (or CascadeType.ALL, which includes DETACH) indicates that detach operations should be cascaded automatically to entity objects that are referenced by that field
因此,分离是从实体管理器卸载对象。如果您不想从其 logEntries 中分离(删除链接)一个 Person,您必须手动执行此操作。
为此,您可以使用 JPQL Update Query在删除 Person 元素之前。举例来说(警告,未测试!!):
Query query = em.createQuery(
"UPDATE LogEntry log SET log.person = null where log.person = :person");
query.setParameter("person", person);
int updateCount = query.executeUpdate();
em.remove(person);
注释:
@PrePersist
和 @PostPersist
带注释的方法)@PreRemove
实体来清除LogEntity关系。关于java - Play 框架 2.1.x CascadeType.DETACH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25618829/
我有一个简单的 hibernate OneToOne 程序。它包含一个 导师类(class)和讲师详情 类(class)。 OneToOne 映射定义为从 Instructor 到 Instructo
我搜索了答案,但无法正确找到答案。当我们设置FetchType.EAGER时,CascadeType.ALL、cascade = CascadeType.REMOVE、orphanRemoval有什么
当我尝试运行以下代码时,出现 org.hibernate.TransientObjectException: object references an unsaved transient instan
使用 JPA 我有一个关于 CascadeTypes 的问题。 例如: @ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.PERSIST,
我正在尝试通过我的 REST-api 向数据库添加一个新的员工实体。 Employee-entity 包含一个 City 属性。这是一个 ManyToOne 关系。当我插入一个新的(不存在的)城市的新
我有两个域类。下面是类的粗略草图。 Company.java public class Company{ @OneToMany(orphanRemoval="true",cascade=Cas
我有两个类: Employee.java @Entity @Table public class Employee { @Id @GeneratedValue private
@OneToMany 注释中插入的 CascadeType 选项与 @Cascade 中插入的 CascadeType 选项有什么区别?哪一个优先,两者之一被忽略吗? @OneToMany(m
我有两个类,彼此之间具有单向一对多关系。 public class Offer{ ... @OneToMany(cascade=CascadeType.ALL) @JoinTa
我有一个相当简单的设置,其中有一个 UserEntity 和一个相应的 UserStatisticEntity。我希望这是一个单向关系,其中 UserEntity 持有引用。 UserStatisti
考虑这个用例。 class Category { @OneToMany(cascade=CascadeType.ALL) List applications = new ArrayList
我有以下代码(当然是经过简化的): @Entity public class Foo { @Generated private Long id; @OneToMany(mappe
我有一个 Entity,其双向 ManyToMany 关系(在同一实体上)标记为 CascadeType.ALL。 以下是查找 Contact 实体的方式: @ManyToMany(cascade=
我现在有点困惑。我有三个表:specialPrice、partner、product。 在specialPrice中,我可以存储可供所选合作伙伴使用的产品的折扣。所以它只有三列。合作伙伴和产品表及其行
我有 OneToMany 双向关系实体类(WorkOrder 和 Task)。 WorkOrder 有一个或多个Task。当我通过query 删除WorkOrder 实体时,出现外键约束异常。 Ent
我现在想知道 Hibernate 中的 CascadeType 和 FetchType 有什么区别? 它们看起来很相似,但我猜它们不能互换,对吧?什么时候使用它们?它们可以同时使用吗? 最佳答案 这是
对于 JPA,我在实体类中定义 Cascade Type 和 orphanRemoval 设置等内容时遇到问题。对我来说,在实体上定义 Cascade Type 和 orphanRemoval 是有限
我认为我在某个地方犯了错误: 有 2 个实体(删除所有无用字段): 1。玩家(许多玩家 -> 在 1 队中) @Component @Entity @Table(name = "player") pu
在多线程环境中, 这有效 Box box = new Box("B"); Toy t1 = box.addNewToy("t1"); Toy t2 = box.addNewToy("t2"); syn
CascadeType.REFRESH 实际上做了什么? 它的定义是 When we refresh an entity all the entities held in this field ref
我是一名优秀的程序员,十分优秀!