Domanda

Sto impazzendo nel tentativo di ottenere un semplice Envers esempio per lavorare. Sono bloccato sul org.hibernate.tool.ant.EnversHibernateToolTask & # 8212; sembra che finalmente ho ottenuto tutti i file jar di cui avevo bisogno, ma ora ricevo il messaggio di errore

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

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

Per quanto ne so, le unità di persistenza sono associate ai file JPA persistence.xml. Ma non sto usando un file persistence.xml; Sto usando hibernate.cfg.xml & # 8212; ma l'esempio envers ha un <jpaconfiguration> nell'attività 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>

c'è qualcosa con cui posso sostituirlo per farlo funzionare con il file hibernate.cfg.xml? Sembra che ci sia documentazione ZERO su come far funzionare correttamente tutte queste cose.

modifica: OK, quindi il problema principale era che non capivo le opzioni di ibernatetool e ciò che era appropriato per la mia app. Ho trovato Hibernate ant docs , per fortuna. Grazie. Ora ho un nuovo problema: sto usando le annotazioni, ma ho anche impostato un hibernate.cfg.xml per le impostazioni delle proprietà. L'attività hibernatetool mi consente di eseguire solo <configuration /> o <annotationconfiguration /> non entrambi, e anche <=> non funzionerà poiché ho già annotazioni che eseguono operazioni. Come posso migrare le mie impostazioni di proprietà dal file hibernate.cfg.xml alle mie annotazioni?

modifica: Duh, non mi ero reso conto che lo fai solo:

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

per i hibernatetool task docs .

È stato utile?

Soluzione

Sostituisci <jpaconfiguration /> con <configuration /> , come descritto nei documenti di Hibernate Tools:

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

Altri suggerimenti

Solo per darti una prospettiva di alto livello. JPA è un'API di persistenza standard fornita da SUN.
È possibile utilizzare qualsiasi framework di persistenza come Hibernate, TopLink, JDO ecc. Come provider di persistenza con JPA.

Quindi, solo per chiarire le cose

Il tuo codice ----- > JPA ----- & Gt; Persistence Provider (Hibernate).

Sarà buona pratica usare l'APP in quanto è una libreria standard.

Quindi, quali sono le informazioni del tuo fornitore di persistenza dovrebbero essere conosciute solo da JPA e non da XML specifici del tuo codice.

Ecco come apparirà il tuo 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>

E il tuo contesto di applicazione apparirà (dipendente da JPA, nessuna menzione di 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>

Devi iniziare dall'inizio: Tutorial JPA di Sun .

Anche questo potrebbe aiutare.

Devi creare persistence.xml e inserirlo nella directory META-INF per il tuo progetto.

Hibernate è un'implementazione concreta per JPA, ma ce ne sono altri (ad esempio, JDO).

È necessario che annotationconfiguration non jpaconfiguration.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top