문제

나는 단순한 것을 얻으려고 노력하고있다 envers 일할 예. 나는 위에 붙어있다 org.hibernate.tool.ant.EnversHibernateToolTask - 마침내 필요한 모든 항아리 파일을 얻은 것 같습니다. 그러나 이제 오류 메시지가 표시됩니다.

[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 파일에서 내 속성 설정을 주석으로 어떻게 마이그레이션 할 수 있습니까?

편집하다: Duh, 나는 당신이 그냥하는 것을 몰랐습니다.

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

HibernateTool 작업 문서.

도움이 되었습니까?

해결책

교체 <jpaconfiguration /> 이랑 <configuration /> 최대 절전 모드 도구 문서에 자세히 설명 된 태그 :

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

다른 팁

당신에게 높은 수준의 전제를 제공하기 위해. JPA는 SUN이 제공하는 표준 지속성 API입니다.
Hibernate, Toplink, JDO 등과 같은 지속성 프레임 워크를 JPA와 함께 지속성 제공 업체로 사용할 수 있습니다.

그래서 일을 명확하게하기 위해

귀하의 코드 -----> JPA -----> 지속성 제공 업체 (Hibernate).

JPA를 표준 라이브러리이므로 사용하는 것이 좋습니다.

따라서 귀하의 지속성 제공 업체 정보는 코드 별 XML이 아닌 JPA에만 알려져야합니다.

이것이 당신의 지속성 .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에 따라 최대 절전 모드에 대한 언급 없음)

    <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 디렉토리에 넣어야합니다.

최대 절전 모드는 JPA에 대한 구체적인 구현이지만 다른 구체적인 구현이지만 다른 것 (예 : JDO)이 있습니다.

jpaconfiguration이 아닌 주석 구성이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top