Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加载hibernate实体时始终调用方法_Java_Hibernate - Fatal编程技术网

Java 加载hibernate实体时始终调用方法

Java 加载hibernate实体时始终调用方法,java,hibernate,Java,Hibernate,我正在从事的项目使用Hibernate进行持久化 本项目分为四个子项目,其中四个子项目与此相关: 消息dom 用户服务 消息服务 个案服务 消息实体(在用户dom中)包含一个字符串userID字段和一个@临时字符串userName字段。另一个实体Case与Message具有OneToOne关系。问题如下: 每次加载消息时(直接在消息服务中加载,或通过在案例服务中加载案例间接加载),我们都需要设置其用户名字段 通过调用用户服务检索用户名 无法从消息dom调用用户服务(由于依赖关系) 我已经

我正在从事的项目使用Hibernate进行持久化

本项目分为四个子项目,其中四个子项目与此相关:

  • 消息dom
  • 用户服务
  • 消息服务
  • 个案服务
消息实体(在用户dom中)包含一个
字符串userID
字段和一个
@临时字符串userName
字段。另一个实体Case与Message具有OneToOne关系。问题如下:

  • 每次加载消息时(直接在消息服务中加载,或通过在案例服务中加载案例间接加载),我们都需要设置其用户名字段
  • 通过调用用户服务检索用户名
  • 无法从消息dom调用用户服务(由于依赖关系)
我已经看到有一个@PostLoad注释用于实体,但显然这些注释在这里没有帮助,因为我们无法从实体调用服务。目前,我们手工进行服务调用,但这很容易出错(特别是在案例中间接加载消息时)


如何确保每次加载消息实体时都设置该字段?

在所有部分都集中在一起的最终应用程序中,实现org.hibernate.event.PostLoadEventListener并通过xml添加它

<hibernate-configuration>
    <session-factory>
        ...
        <event type="load">
            <listener class="com.eg.MyPostLoadListener"/>
            <listener class="org.hibernate.event.def.DefaultPostLoadEventListener"/>
        </event>
    </session-factory>
</hibernate-configuration>

实现Postload事件并将其注册到配置中object@Firo:请你详细说明一下好吗?这似乎是正确的方向,但我不知道config对象是什么+1。只是:投票支持
xml
configuration以支持以后更容易的扩展
Configuration cfg = new Configuration();
PostLoadEventListener[] stack = { new MyPostLoadListener(), new DefaultPostLoadEventListener() };
cfg.EventListeners().setPostLoadEventListeners(stack);