gpt4 book ai didi

java - @Transactional 不适用于 JPA 实体

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:51 25 4
gpt4 key购买 nike

我在实体中有一个静态方法

@Transactional
public static void updateState() {
entityManager().createNativeQuery("UPDATE TABLEA SET hide = 1 WHERE id= 1").executeUpdate();
}

但是当我调用该方法时,我捕获到一个异常,说更新语句需要事务。

我是否以错误的方式使用了@Transactional

最佳答案

您似乎正在尝试按照 Active Record 模式使您的实体成为胖域模型(而不是 Java EE 世界中最常见的瘦模型)。您尝试做的事情不会像 Spring 中那样有效。

如果您将方法重构为非静态的(第一个问题),那么让 @Transactional 在 JPA 实体上工作的一种方法是使用 @Configurable 注释Spring(使其由 Spring 管理 - 因此解决了第二个问题),以及加载时编织和 Java 代理。请参阅thisthis了解更多详情。

关于java - @Transactional 不适用于 JPA 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23557507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com