2010-03-03 10 views
2

나는 persistence.xml을 매개 변수화했습니다. hbm2ddl을 사용하여 ddl 스키마를 생성하려고합니다. 이 도구에 매개 변수를 전달하려면 어떻게해야합니까? 난 (-Dpersistence.dialect = 값을 이용하여) 서버 파라미터 값 JAVA_OPTS로 전달 시작하면 hbm2ddl에 매개 변수 전달

<property name="hibernate.connection.driver_class" value="${persistence.connection.driver.class}"/> 
<property name="hibernate.dialect" value="${persistence.dialect}"/> 
<property name="hibernate.connection.password" value="${persistence.password}"/> 
<property name="hibernate.connection.username" value="${persistence.username}"/> 

같이

persistence.xml을 내 보인다. 그리고 그것은 잘 작동합니다.

어떻게 hbm2ddl을 사용하여이 작업을 수행합니까?

나는 재산

<hibernatetool destdir="${gensrc.sql.dir}"> 
    <property key="persistence.dialect" value="org.hibernate.dialect.Oracle9Dialect"/> 
    <jpaconfiguration persistenceunit="${persistence.unit.name}" /> 
    <classpath> 
    <!-- it is in this classpath you put your classes dir, 
     and/or jpa persistence compliant jar --> 
    <path location="${build.classes.dir}" /> 
    </classpath> 
    <hbm2ddl export="false" drop="true" outputfilename="create_${ant.project.name}.sql" format="true" haltonerror="true" /> 
</hibernatetool> 

을 시도하지만이 값을하지 않습니다. 그것은 나에게 오류를 보여줍니다.

build.xml:160: org.hibernate.HibernateException: Dialect class not found: ${persistence.dialect} 

답변

3

propertyfile을 통해 방언을 지정할 수 있습니다.

hibernate.dialect=org.hibernate.dialect.Oracle9Dialect 

을 그리고이처럼 사용하십시오 hibernate.properties에 선언

<jpaconfiguration propertyfile="hibernate.properties"/> 
+0

감사 파스칼. https://www.hibernate.org/hib_docs/tools/reference/en/html/ant.html을 참조했습니다. 개미를 사용하여 어떻게 할 수 있습니까? 내 말은 당신이 내 에서이 속성들을 어디에 지정해야 하는지를 가리킬 수 있는가? 고마워. –

+0

@지가 죄송합니다, 잘못된 링크. 내 anwser를 다른 제안으로 업데이트했습니다. –

+0

다시 한번 감사드립니다. 그것은 효과가 있었다. (첫 번째). (jpaconfiguration은 prop 속성을 지원하지 않습니다.) 작은 문제는 여전히 남아 있습니다. persistence.xml을 매개 변수화하는 목적은 런타임에이 값을 변경하는 것이 었습니다. 그래서 oracle 용 ddl을 생성하고 싶다면 방언으로 param을 지정하면 ddl을 생성 할 수 있습니다. 여기 hibernate.dialect = oracle.driver를 사용하여 파일을 지정해야합니다. 나는 지금 그것을 해왔다. 답장을 보내 주셔서 감사합니다. –