- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经阅读了有关生命周期事件的文档,以及关于在生命周期事件期间更改或保留新实体的几个问题。调用EnitityManager::flush()
似乎是个问题。
好的,但是 looking carefully at the docs ,有一个代码示例,其中在 postPersist 中更改了字段,但没有调用刷新。
我检查了,建议的更改是 不是 写入数据库。只有被持久化的对象才会收到更改。
<?php
/** @Entity @HasLifecycleCallbacks */
class User
{
// ...
/**
* @Column(type="string", length=255)
*/
public $value;
/** @PostPersist */
public function doStuffOnPostPersist()
{
$this->value = 'changed from postPersist callback!';
}
}
/** @PostPersist */
public function doStuffOnPostPersist(LifecycleEventArgs $args)
{
$this->value = 'changed from postPersist callback!';
$args->getEntityManager()->flush(); // works in my tests. Is this safe to use ?
}
flush
在 postPersist 里面。
/** @PostPersist */
public function doStuffOnPostPersist(LifecycleEventArgs $args)
{
$this->value = 'changed from postPersist callback!';
$obj = new OtherObject("value " . $this->value);
$args->getEntityManager()->persist($obj);
$args->getEntityManager()->flush(); // works in my tests. Is this safe to use ?
}
最佳答案
I checked that, and the suggested change is not written to the DB. Only the object being persisted does receive the change.
Maybe one should add this to the docs. I was mislead at first.
flush()
叫做。这只是一个示例,该值也可以未映射到类
User
的数据库属性。 .
I don't know how to interpret the docs about whether it is OK or not to call flush inside the postPersist.
flush()
在 PostPersist 生命周期回调上以更改映射属性
flush()
您的实体将被标记为要更新,因此 PostPersist 事件不会
Side question: If yes, it is ok to flush, could I then also persist other objects in PostUpdate?
Side-side question: I have tried the last variant, and it seems to work. But is it efficient, or am I possibly creating deep recursion stacks?
flush()
将被调用两次。尽管在还必须处理关联时事情可能会变得更加复杂,但在您的示例中不存在这样的问题。
关于symfony - 是否可以在 postPersist 中刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52460477/
我有一个带有名为“doAudit”的@PostPersist 方法的监听器来审核创建操作。在调试时我看到此方法被调用并且审核记录是在 JAVA 端创建的。但是当我验证数据库时,我没有看到记录。 pub
我有一个持久化实体对象的方法 persistData() 。我有另一个方法 findData() ,它对同一实体类执行 find() 操作以获取持久的主键值。当我在实体类的@PostPersist中调
我已经阅读了有关生命周期事件的文档,以及关于在生命周期事件期间更改或保留新实体的几个问题。调用EnitityManager::flush()似乎是个问题。 好的,但是 looking carefull
我想在实体上添加新的 Feed 项并持续更新。我写了这个事件监听器(postUpdate 是一样的): public function postPersist(LifecycleEventArgs $
我正在尝试在创建另一个实体的基础上创建一个新实体。示例:我有一段关系 Sale Payment 现在,当我坚持销售时,您必须创建一个初始付款,但我不知 Prop 体该怎么做。 我尝试过: 使用@OR
我在使用手动事务时插入/更新 3 个表。我想在事务提交后立即插入到历史表中。这意味着有 3 em.persist操作(对于每个表),并且只有在提交它们之后我才想调用一个方法。 这是我的代码: @Res
Doctrine 的事件监听类中的 postUpdate 和 postPersist 事件有什么区别?以我的理解,更新和插入都必须坚持下去。那么当可以在 postPersist 事件中处理它时,拥有
我正在尝试设置我的 hibernate 应用程序以在每次创建 Activity 实体时都保留一个新的 Notification 实体 - 目前,我已经尝试了 通知只是无法静默地持续存在(日志中没有错误
假设我有实体 Account: @Entity(name = "ACCOUNT") @EntityListeners(Listener.class) public class AccountEntit
我在数据库中出现双重插入的奇怪错误。我有以下类(class): TestEntity - 具有@PrePersist 和@PostPersist 方法的实体。 Auditoria - 审计实体 Dat
我目前正在使用 @PostPersist 和 @PostUpdate,在这些触发器中我正在持久化其他实体。问题是,这些触发器是否在同一事务中,如果不是,是否可以强制执行? 对我来说,它是这样工作的。当
我正在使用监听器来坚持和根据 Doctrine 进行更新。 唯一的问题是,当调用监听器时,它会创建并更新新的/当前的实体,因此它再次调用自身,从而创建两个实体。 我认为阻止这种情况的唯一方法是拥有一个
在 Symfony 中创建 Doctrine postPersist EventListener 后,我的 IDE 指向 $args->getEntity() 行;由于已被弃用,我不知道如何解决这个问
我有一个 JPA @Entity 类,它使用 @PrePersist 已经有一段时间了。今天我想在需要该实体 ID 的地方添加一些功能。此 ID 由数据库中的 HIBERNATE_SEQUENCE 持
我有一个用于测试 @EntityListeners 功能的小型测试应用程序。当我运行应用程序时,我得到以下堆栈跟踪 Exception in thread "main" org.springframe
我有下一个 ER 图 我想在每次保存 Score 实体时更新 PlayerStat 实体。所以我尝试使用 @PostPersist 注释。当我保存 Score 实体时,调用该注释的函数,但我在此函数中
每当在管理员中完成持久化或更新等操作时,我想创建一个静态 Twig 文件。我在想的是创建一个名为 GenerateStaticListener 的监听器。监听器将监听事件 postPersist 或
我是一名优秀的程序员,十分优秀!