当前位置: 首页 > 知识库问答 >
问题:

我可以编辑类内Hibernate实体的字段(例如一些域逻辑)还是会导致一些与代理相关的问题?

姬飞飙
2023-03-14

我知道Hibernate在幕后使用代理,例如,我知道Spring数据使用代理进行事务,并且@Transaction Annotation有限制(如果类A中的method1使用类A中的@Transaction Annotation调用method2,那么注释将无效)。所以我的问题是,在Hibernate中是否存在类似的限制?因为我想在Hibernate实体类中实现域逻辑的一部分,因此我必须确保我的方法可以修改类中的字段(原语/其他实体/实体集合),而不会出现与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-实体类中编写部分域逻辑来修改事务中的字段(原语/实体/实体组合),是否会出现一些问题(与Hibernate有关)?

共有1个答案

拓拔麒
2023-03-14

我找到一篇关于类似内容的帖子(https://thoughts-on-java.org/access-strategies-in-jpa-and-hibernate/)如果我使用基于字段的访问,看起来我可以这样做(请参阅帖子中的原因5)。有人能证实这一点吗?

 类似资料:
  • 我想就以下用例征求您的帮助和建议,这些用例与我们的新业务案例相关,CorDapp将用于管理软件许可证的使用和管理。 Corda是否有预定义的结构或方法来定义不同状态之间的父级和子级关系,例如,一个合同状态(主合同)有两个子合同状态(两种类型的许可合同) 如果我们想跟踪区块链上的许可证使用情况,这是许可证可拥有状态的一个好方向吗?我们目前的想法是,甲方(许可证提供商)和乙方(许可证消费者)签订了一份

  • 我有一个以输入类型为数字的编辑文本。但是在完成一项任务后,如果我再次单击编辑文本,输入类型将更改为文本。 大约一秒钟后,它会将输入类型显示为数字,很快它就会自动将编辑文本的输入类型更改为文本。即使我点击按键,编辑文本上也不会显示任何内容。 我检查了logcat,我得到了这个: 我检查了这个链接:getExtractedText on inactive InputConnection warning

  • 这是我的iframe它在一个有按钮的div里面 这里我需要的是我的代码,它将改变iframe的大小,它的src链接是size。但正如您所看到的,id为“mydiv”的mydiv具有样式宽度,而高度是自动的。当我使窗口变大时,我需要我的代码在宽度和高度上都是100%全宽,div是大小增加的,但iframe并没有改变,因为它有固定的大小。 我已经试过了 但是它不能正常工作。无论是iframe是一团糟,

  • 我们是新的Kafka,所以我正在寻找一些高水平的指导。我们有一个实体(我们可以称之为“订单”)的数据,该实体本质上是许多不同的实体(我们可以将一个称为“小部件”,一个称为“小玩意”,但大约有20种不同的实体类型)。 显然,将订单作为一个单一的主题来思考是有好处的,因为所有的部分都与一个订单相关。但在设计上,将这些主题分开(订单、小部件、小发明等)是否更有意义? 小部件和小玩意之间没有直接的关联--

  • 我面对java内部类,我在外部变量可见性方面遇到了一些麻烦。 如果内部和外部类之间没有可见性限制,为什么我不能做这样的事情(见“这里”标签)?我真的不理解这些规则。

  • 考虑以下一段代码,它生成数组[1,2,3,...,n]的大小为k的所有子集: 例如,将生成[1,2,3,4]的长度为2的所有子集。代码中有两行生成一个删除了最后一个元素的列表。我尝试用来实现,并通过切掉最后一个元素(即)来创建一个全新的列表。带有的版本会生成正确的结果。但是,带有的版本没有。没有运行时错误;只是一个逻辑错误(即不正确的结果)。 我怀疑这与在进行切片时创建新列表和使用保持相同列表有关