Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
使用ant和hibernate envers创建audity表_Hibernate_Ant_Hibernate Envers - Fatal编程技术网

使用ant和hibernate envers创建audity表

使用ant和hibernate envers创建audity表,hibernate,ant,hibernate-envers,Hibernate,Ant,Hibernate Envers,我对Hibernate Envers比较新,我尝试生成audity表,但没有成功:(…我正在使用Hibernate-core-3.5.6-Final.jar和Hibernate-Envers-3.5.6-Final.jar) 我的第一次尝试是在我的hibernate.cfg.xml <hibernate-configuration> <session-factory> ... <property name="hbm2ddl.auto">update&l

我对Hibernate Envers比较新,我尝试生成audity表,但没有成功:(…我正在使用
Hibernate-core-3.5.6-Final.jar
Hibernate-Envers-3.5.6-Final.jar

我的第一次尝试是在我的
hibernate.cfg.xml

<hibernate-configuration>
<session-factory>
...
    <property name="hbm2ddl.auto">update</property>
    <property name="hibernate.ejb.event.post-insert">org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener</property>
    <property name="hibernate.ejb.event.post-update">org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener</property>
    <property name="hibernate.ejb.event.post-delete">org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener</property>
    <property name="hibernate.ejb.event.pre-collection-update">org.hibernate.envers.event.AuditEventListener</property>
    <property name="hibernate.ejb.event.pre-collection-remove">org.hibernate.envers.event.AuditEventListener</property>
    <property name="hibernate.ejb.event.post-collection-recreate">org.hibernate.envers.event.AuditEventListene</property>
...
 </session-factory>
但是update命令忽略了audity表,因此我尝试创建一个ant任务来生成一个schema ddl文件,因此在我的
build.xml
文件中有一个任务,如:

<target name="schemaexport" description="Exports a generated schema to DB and file">
    <echo message="generación schema "/>
  <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.EnversHibernateToolTask"
    classpath="${CK_JARS}/hibernate-envers-3.5.6-Final.jar"/>
 <hibernatetool destdir="${clases.dir}">
    <classpath>
      <fileset refid="hibernate-envers-3.5.6-Final.jar" />
      <path location="${CK_JARS}/" />
    </classpath>
    <jpaconfiguration persistenceunit="ConsolePU" />
    <hbm2ddl
      drop="false"
      create="true"
      export="false"
      outputfilename="C:/Desarrollo/versioning-ddl.sql"
      delimiter=";"
      format="true"/>
  </hibernatetool>
</target>

这个配置显然不起作用,这是因为我不确定类路径中应该设置哪些值“找不到类
org.hibernate.tool.ant.EnversHibernateToolTask
所需的taskdef类:
org/hibernate/tool/ant/HibernateToolTask
”来自ant控制台的错误消息


你知道这两方面的问题出在哪里吗?

我会回答自己,希望能尽力为别人解答

首先,为了能够使用envers,我几乎疯狂地配置我的
hibernate.cfg.xml
。最后我放弃了这个选项,迁移到JPA 2.0。为了设置JPA配置,必须在
WEB-INF/classes/META-INF
目录中有一个
persistence.xml
。在我的例子中,这个存档如下所示:

?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence             
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="****" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/jdbc/EaliaPagosDTSource</jta-data-source>
<class>es.cecabank.ealiapagos.accesobd.model.EalUsusMediospEsts</class>
<class>es.cecabank.ealiapagos.accesobd.model.EalUsusAliasEsts</class> 
...
<properties>
    <!-- property name="javax.persistence.transactionType"
   value="RESOURCE_LOCAL" /-->
    <property name="hibernate.bytecode.use_reflection_optimizer" value="false"/>
    <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
    <property name="javax.persistence.jdbc.password" value="****"/>
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:********"/>
    <property name="javax.persistence.jdbc.user" value="****"/>
    <property name="javax.persistence.jdbc.default_schema" value="****"/>
    <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
    <property name="hibernate.show_sql" value="true"/>
    <property name="hibernate.dialect"  value="org.hibernate.dialect.Oracle9iDialect"/>
    <property name="hibernate.search.autoregister_listeners" value="false" />
    <property name="hibernate.current_session_context_class" value="thread"/>
    <property name="show_sql" value="true"/>
    <property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
?xml version=“1.0”encoding=“UTF-8”standalone=“否”>
org.hibernate.ejb.HibernatePersistence
java:/jdbc/EaliaPagosDTSource
es.cecabank.ealiapagos.accesobd.model.EALUSSEMEDIOSPESTS
es.cecabank.ealiapagos.accesobd.model.EalUsusAliasEsts
...
请注意,我正在为Transaction类型在配置中设置JTA。这非常重要,因为您管理事务的方式取决于此值。在我的例子中,我使用了在
标记中定义的数据源的事务,它指的是JBOSS配置文件
standalone.xml
中声明的数据源。我将我的实体标记为with@Audited注释和审计表是在我将应用程序部署到JBOSS 7.1时自动生成的

如果有人需要更多的细节,请毫不犹豫地询问

?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence             
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="****" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/jdbc/EaliaPagosDTSource</jta-data-source>
<class>es.cecabank.ealiapagos.accesobd.model.EalUsusMediospEsts</class>
<class>es.cecabank.ealiapagos.accesobd.model.EalUsusAliasEsts</class> 
...
<properties>
    <!-- property name="javax.persistence.transactionType"
   value="RESOURCE_LOCAL" /-->
    <property name="hibernate.bytecode.use_reflection_optimizer" value="false"/>
    <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
    <property name="javax.persistence.jdbc.password" value="****"/>
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:********"/>
    <property name="javax.persistence.jdbc.user" value="****"/>
    <property name="javax.persistence.jdbc.default_schema" value="****"/>
    <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
    <property name="hibernate.show_sql" value="true"/>
    <property name="hibernate.dialect"  value="org.hibernate.dialect.Oracle9iDialect"/>
    <property name="hibernate.search.autoregister_listeners" value="false" />
    <property name="hibernate.current_session_context_class" value="thread"/>
    <property name="show_sql" value="true"/>
    <property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>