Вопрос

Я схожу с ума, пытаясь получить простой Энверс пример для работы.я застрял на org.hibernate.tool.ant.EnversHibernateToolTask — похоже, я наконец-то получил все необходимые jar-файлы, но теперь получаю сообщение об ошибке

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

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

Насколько я могу судить, единицы персистентности связаны с JPA. persistence.xml файлы.Но я не использую файл persistence.xml;Я использую hibernate.cfg.xml, но в примере с envers есть <jpaconfiguration> в задаче муравья:

<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>

есть ли что-нибудь, чем я могу его заменить, чтобы заставить его работать с файлом hibernate.cfg.xml?Кажется, нет НУЛЕВОЙ документации о том, как заставить все это работать правильно.

редактировать: Хорошо, основная проблема заключалась в том, что я не понимал параметры hibernatetool и то, что подходит для моего приложения.я нашел Документация по спящему муравью, к счастью.Спасибо.Теперь у меня новая проблема:Я использую аннотации, но я также настроил hibernate.cfg.xml для настроек свойств.А hibernatetool задача позволяет мне запускать только <configuration /> или <annotationconfiguration /> не то и другое, и даже <configuration /> не будет работать, поскольку у меня уже есть аннотации, которые что-то делают.Как перенести настройки свойств из файла hibernate.cfg.xml в мои аннотации?

редактировать: Да, я не осознавал, что ты просто делаешь:

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

согласно Документация по задачам hibernatetool.

Это было полезно?

Решение

Замените <jpaconfiguration /> на тег <configuration /> , как подробно описано в документации по Hibernate Tools:

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

Другие советы

Просто чтобы дать вам перспективу высокого уровня.JPA — это стандартный API персистентности, предоставляемый SUN.
Вы можете использовать любую структуру персистентности, такую ​​​​как Hibernate, TopLink, JDO и т. д., в качестве поставщика персистентности с JPA.

Так что просто чтобы прояснить ситуацию

Ваш код -----> JPA -----> Поставщик постоянства (Hibernate).

Хорошей практикой будет использование JPA, поскольку это стандартная библиотека.

Итак, какая информация о вашем поставщике персистентности должна быть известна только JPA, а не XML-коду, специфичному для вашего кода.

Вот как будет выглядеть ваш файл 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>

И контекст вашего приложения будет выглядеть так (зависит от JPA, без упоминания о 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>

Вам нужно начать с самого начала: учебник Sun по JPA .

Это также может помочь.

Вам нужно создать файл persistence.xml и поместить его в каталог META-INF для вашего проекта.

Hibernate - это одна конкретная реализация для JPA, но есть и другие (например, JDO).

Вам нужна конфигурация аннотации, а не jpaconfiguration.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top