我知道 Hibernate 在底层使用代理,并且我知道 Spring-data 使用代理进行事务,并且 @Transaction 注解存在限制(如果 A 类中的 method1 使用 A 类中的 @Transaction 注解调用 method2,则注解将不起作用)。所以我的问题是 Hibernate 中是否存在类似的限制?因为我想在 Hibernate-Entity 类中实现域逻辑的某些部分,为此我必须确保我的方法可以修改类中的字段(基元/其他实体/实体集合),而不会出现任何与 Hibernate 相关的问题。请参阅代码示例。
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(unique = true, nullable = false)
private String email;
public void doChange() {
doChangePrivate();
}
private void doChangePrivate() {
email = "asdf@a.com";
}
}
...
start Transaction inside a Service-Class
... myentity.doChange();
我尝试了一下,效果很好。但是,如果我在 hibernate-entity 类中编写域逻辑的某些部分来修改事务中的字段(基元/实体/实体集合),是否会出现一些问题(与 hibernate 相关)?
最佳答案
我发现了一篇关于类似内容的帖子 ( https://thoughts-on-java.org/access-strategies-in-jpa-and-hibernate/ ),看起来如果我使用基于字段的访问,我就可以执行此操作(请参阅帖子中的原因 5)。有人可以证实这一点吗?
关于java - 我可以在类内编辑 hibernate 实体的字段(例如某些域逻辑)还是会导致一些与代理相关的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248289/