Pregunta

Me estoy volviendo loco tratando de obtener un simple Envers ejemplo para trabajar. Estoy atascado en el org.hibernate.tool.ant.EnversHibernateToolTask & # 8212; parece que finalmente obtuve todos los archivos jar que necesitaba, pero ahora recibo el mensaje de error

[hibernatetool] Persistence unit not found: 'ConsolePU'.

BUILD FAILED
C:\deka\proj\java\test-database\build.xml:61: Persistence unit not found: 'ConsolePU'.

Por lo que puedo decir, las unidades de persistencia están asociadas con archivos JPA persistence.xml. Pero no estoy usando un archivo persistence.xml; Estoy usando hibernate.cfg.xml & # 8212; pero el ejemplo de envers tiene un <jpaconfiguration> en la tarea ant:

<hibernatetool destdir=".">
        <classpath>
             <fileset dir="src/">
                  <include name="**/*.hbm.xml"/>
            </fileset>

            <path location="${buildDir}" />
        </classpath>
    <jpaconfiguration persistenceunit="ConsolePU" />
    <hbm2ddl
        drop="false"
        create="true"
        export="false"
        outputfilename="versioning-ddl.sql"
        delimiter=";"
        format="true"/>
    </hibernatetool>

¿hay algo con lo que pueda reemplazarlo para que funcione con el archivo hibernate.cfg.xml? Parece que hay documentación CERO sobre cómo hacer que todo esto funcione correctamente.

editar: OK, por lo que el principal problema era que no entendía las opciones de hibernatetool y lo que era apropiado para mi aplicación. Encontré el Hibernate ant docs Afortunadamente. Gracias. Ahora tengo un nuevo problema: estoy usando anotaciones, pero también he configurado un hibernate.cfg.xml para la configuración de propiedades. La tarea hibernatetool solo me permite ejecutar <configuration /> o <annotationconfiguration /> no ambos, e incluso <=> no funcionará ya que ya tengo anotaciones haciendo cosas. ¿Cómo puedo migrar la configuración de mi propiedad del archivo hibernate.cfg.xml a mis anotaciones?

editar: Duh, no me di cuenta de que acabas de hacer:

<annotationconfiguration configurationfile="...filename..." />

según documentos de tareas de hibernatetool .

¿Fue útil?

Solución

Reemplace el <jpaconfiguration /> con el <configuration /> etiqueta, como se detalla en los documentos de Hibernate Tools:

<configuration
    configurationfile="hibernate.cfg.xml"
    propertyfile="hibernate.properties"
    entityresolver="EntityResolver classname"
    namingstrategy="NamingStrategy classname">

Otros consejos

Solo para darle una perspectiva de alto nivel JPA es la API de persistencia estándar proporcionada por SUN.
Puede usar cualquier marco de persistencia como Hibernate, TopLink, JDO, etc. como proveedor de persistencia con JPA.

Así que para aclarar las cosas

Su código ----- > JPA ----- & Gt; Proveedor de persistencia (Hibernate).

Será una buena práctica usar JPA, ya que es una biblioteca estándar.

Entonces, ¿cuál es la información de su proveedor de persistencia solo debe ser conocida por JPA y no por su código XML específico?

Así se verá su persistence.xml

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="QuarkFrameworkPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
</persistence-unit>

Y el contexto de su Aplicación se verá así (Dependiendo de JPA, sin mención de Hibernate)

    <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    p:driverClassName="com.mysql.jdbc.Driver" p:url="${db.url}" />




<!-- ADD PERSISTENCE SUPPORT HERE (jpa,etc) -->

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="QuarkFrameworkPU" />
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
        </bean>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    <property name="dataSource" ref="dataSource" />
</bean>

Debe comenzar desde el principio: Tutorial JPA de Sun .

Esto también podría ayudar.

Necesita crear persistence.xml y ponerlo en el directorio META-INF para su proyecto.

Hibernate es una implementación concreta para JPA, pero hay otras (por ejemplo, JDO).

Necesita una configuración de anotación, no una configuración de jpa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top