- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个实现 postLoad 生命周期事件方法的实体。此方法有条件地更新实体并尝试保存它。类似的东西:
/**
* @PostLoad
*/
public function checkExpiryDate()
{
$currentDate = new App_Date();
// Check the expiry date here
if ($currentDate->getTimestamp() > $this->getDateExpired()->getTimestamp()) {
$this->Status = "expired";
$this->ServiceLayer->saveEntity($this);
}
}
但是,我收到以下错误:
Call to a member function fetch() on a non-object in Doctrine/ORM/Internal/Hydration/ObjectHydrator.php on line 149
我似乎无法在 postLoad 期间保存实体。
我偶然发现了 this ticket这建议在新 key 下注册 ObjectHydrator 并在任何新查询期间指定水化器。
但是,我想知道是否有更好的方法可以在更抽象的层次上实现它;每当在 postLoad 调度期间构建查询时,我想自动注册一个新的 ObjectHydrator。
此外,谁能简要解释一下为什么这是一个问题?据我所知,一旦使用了水化器,查询就会被删除,但我不明白为什么在构建新查询时这会成为问题,即使水化器被重复使用也是如此。
谢谢指点!
最佳答案
这是不受支持的,尤其是当您在服务层内调用 EntityManager
操作时。
您会遇到所有可能的奇怪竞争条件,因为您基本上是在重复使用相同的水合器并破坏它们的内部状态,使它们在仍在水合您的结果集时变得无用。
这是一个已知问题,如果您确实需要在 @PostLoad
期间处理此初始化逻辑,则有解决方法。参见 http://www.doctrine-project.org/jira/browse/DDC-1010
与其使用监听器来填充对象缺失的依赖项,不如考虑在从实体管理器获取对象后使用服务层来处理它。无论如何,这将不允许您为示例中的实体使用任何代理。
关于php - 在 postLoad 中加载 Doctrine 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15085728/
我已经安装了webpack@2.1.0-beta.27。之前,我使用的是 webpack@2.1.0-beta.22。在我的配置文件中,我使用了 preLoaders 和 postLoaders: p
环境:JBoss Seam、JPA、Hibernate 我们使用@PostLoad 注释来动态初始化@Entity 中的一些 transient 变量(有时这涉及查找父实体以初始化状态——这是一项代价
我想用它来操作带有目录服务的存储库中的数据,但是 Autowiring 注解没有注入(inject)依赖。 @Service public class PostEntityListener { @P
查看了许多论坛,但没有找到答案...简单的东西,用@PostLoad 注释的方法永远不会被调用...通过@EntityListeners 添加了监听器,但问题仍然存在。我正在使用基于 SessionF
使用 JPA2/Hibernate,我创建了一个实体 A,它具有到实体 X 的单向映射(见下文)。在 A 内部,我还有一个 transient 成员“t”,我试图使用 @PostLoad 方法来计算它
我目前正在尝试在从数据库加载模型后使用@PostLoad注释进行一些处理。但目前看来我的方法不会被触发。我不使用 EntityManager,因此我正在寻找一种启用此事件行为的方法。 我的配置如下:
我有以下测试: public class Book { public boolean postLoadInvoked; @PostLoad private void on
我的实体类层次结构如下.. ClassB 扩展 ClassA 扩展抽象 mappedsuperclass AbstractClass 抽象类 @MappedSuperclass public abst
我目前有一个实体,我想在加载时稍微修改一下。此修改将是一次性更改,然后将与实体一起持久保存在新字段中。 阐明我当前的目标:该实体是一个“位置”并构成嵌套集的一部分。它有一个名称、lft/rgt 值和一
我有一个实现 postLoad 生命周期事件方法的实体。此方法有条件地更新实体并尝试保存它。类似的东西: /** * @PostLoad */ public function checkExpir
我有一个实体类,另一个类是该实体的 Identity 类。我在 Id 类中编写了 @javax.persistence.PostLoad 注释,以在其中一列上放置一些默认值。 但我发现它根本没有被调用
我们正在使用 Hibernate EntityManager 3.6.10(实现 JPA 2)。我已经检查了 JPA 规范和 Hibernate 文档,但它似乎没有解决这个问题。 我有许多实体对象使用
我有几个实体类。现在我想在每个实体中使用@PostLoad。每个实体的功能代码都是相同的。所以我创建了一个父类(super class)(公共(public)抽象类 AbstractModel {..
如果实体类及其父类(super class)都实现了用 javax.persistence.PostLoad 注释的方法,会发生什么?必须调用哪个方法以及首先调用哪个方法?它是否取决于方法的可见性(私
我有一个具有 OneToMany 关系的简单实体: @Column(name = "TITLE") private String _title; @OneToMany(cascade = Cascad
我的问题是我在 @Embeddable 上的 @PostLoad 方法没有被调用。 但我不知道,如果它应该工作并且在某处存在更多配置错误的错误,或者我不应该工作因为 @PostLoad 仅适用于 @E
如果我指定 postLoaders: [],webpack 2.1.0-beta.25(至少 beta 23+)会抛出以下错误在我的 webpack.config 中: (只是有趣的一点): conf
我们有两个 Spring Data JPA 实体(父、子),子项的字段设置为特定值的计数,影响在 @Transient 属性中设置的父项记录的值@PostLoad 家长: @Entity public
我有一个父类(super class)和继承类,它们是吗啡实体。我想添加一个 @PostLoad 函数来为所有继承的实体运行。我可以这样做吗? 我还看到了this我猜这个问题是针对 SQL 数据库的。
我有一份描述我应用程序中模型的文档,我想在加载文档后更改字段值,我发现使用事件监听器可以做到这一点。我在我的 config/services.yml 中添加了一个新的监听器(postLoad 监听器)
我是一名优秀的程序员,十分优秀!