Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
如何在hibernate中自动生成非id值?_Hibernate_Spring_Annotations_Sessionfactory - Fatal编程技术网

如何在hibernate中自动生成非id值?

如何在hibernate中自动生成非id值?,hibernate,spring,annotations,sessionfactory,Hibernate,Spring,Annotations,Sessionfactory,我正在使用hibernate注释、spring、sessionFactory,并在context.xml中定义所有内容(比如…) 有人知道我怎样才能做到这一点吗?我查看了@PrePersist,但所有dao的etc都使用saveOrUpdate,而这两者似乎并没有同时进行。我认为@preUpdate可能会起作用,但同样的,它似乎没有被调用。有没有人能给我一些关于如何实现这一目标的想法 谢谢 您可以实现并将其挂接到SessionFactory中。然后实现侦听器以监视此特定对象类型,并根据需要分配外

我正在使用hibernate注释、spring、sessionFactory,并在context.xml中定义所有内容(比如…)

有人知道我怎样才能做到这一点吗?我查看了@PrePersist,但所有dao的etc都使用saveOrUpdate,而这两者似乎并没有同时进行。我认为@preUpdate可能会起作用,但同样的,它似乎没有被调用。有没有人能给我一些关于如何实现这一目标的想法

谢谢

您可以实现并将其挂接到SessionFactory中。然后实现侦听器以监视此特定对象类型,并根据需要分配外部ID

您可以使用SpringFactorybean的map属性初始化事件侦听器

  <property name="eventListeners" ref="hibernateEventListenerMap">

  <util:map id="hibernateEventListenerMap">
    <entry key="pre-insert">
      <list>
        <ref bean="customEventListenerBeanNameHere"/>
      </list>
    </entry>
  </util:map>

我查看了@PrePersist,但所有dao的etc都使用saveOrUpdate,而这两者似乎并没有同时进行。我认为@PreUpdate可能会起作用,但同样的,它似乎没有被调用

PrePersist/PreUpdate是JPA注释,因此要使它们工作,您必须使用EntityManager

有没有人能给我一些关于如何实现这一目标的想法

使用Hibernate Core的“等价物”,即拦截器或事件系统

参考文献
  • Hibernate核心参考指南
    • 你试过了吗

      public void setId( Long p_id ) {
              id = p_id;
              this.externalId = "dev_" + StringUtils.leftPad(p_id.toString(), 5, '0') );
          }
      
      ?


      字符串utils来自

      谢谢,这非常有帮助-现在查看一下:-)
        <property name="eventListeners" ref="hibernateEventListenerMap">
      
        <util:map id="hibernateEventListenerMap">
          <entry key="pre-insert">
            <list>
              <ref bean="customEventListenerBeanNameHere"/>
            </list>
          </entry>
        </util:map>
      
      public void setId( Long p_id ) {
              id = p_id;
              this.externalId = "dev_" + StringUtils.leftPad(p_id.toString(), 5, '0') );
          }