2010-06-06 3 views
4

을 가진 PK 생성기를 발견하면 시퀀스 생성기가 primary-key으로 검출되도록 hibernate3-maven-plugin을 구성 할 수 있습니까? 나는 (hibernate-tools 기존 데이터베이스 스키마에 reverse-engineering를 통해 당신을 위해 jdbc-connection를 사용하여 최대 절전 모드 설정을 생성시키는 의미) hibernate 구성의 상향식 (bottom-up) 접근 방식을 사용하고 있습니다. 나는 this을 읽은뿐만 아니라 this 이미 (그 두 관련이 될 수 있지만, 또한 힌트를 남길 수 있습니다).hibernate.reveng.xml을 구성하여 hibernate3-maven-plugin과 Postgre

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-reverse-engineering 
SYSTEM "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" > 

<hibernate-reverse-engineering> 
    <table name="ORDERS"> 
     <primary-key> 
      <!-- setting up a specific id generator for a table --> 
      <generator class="sequence"> 
       <param name="sequence">ORDERS_ORDER_ID_seq</param> 
      </generator> 
      <key-column name="ORDER_ID"/> 
     </primary-key> 
    </table> 
</hibernate-reverse-engineering> 

그리고 내가이 같은 Orders.hbm.xml 파일을 생성 할 것으로 예상하고 있습니다 :

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated 2010-06-06 18:55:42 by Hibernate Tools 3.2.2.GA --> 
<hibernate-mapping> 
    <class name="some.package.Orders" table="orders" schema="public"> 
     <id name="orderId" type="long"> 
      <column name="order_id" /> 
      <generator class="sequence"> 
       <param name="sequence">ORDERS_ORDER_ID_seq</param> 
      </generator> 
     </id> 
    ... 
    </class> 
</hibernate-mapping> 

을 ...하지만이 대신 수신 :

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated 2010-06-06 18:55:42 by Hibernate Tools 3.2.2.GA --> 
<hibernate-mapping> 
    <class name="some.package.Orders" table="orders" schema="public"> 
     <id name="orderId" type="long"> 
      <column name="order_id" /> 
      <generator class="assigned" /> 
     </id> 
    ... 
    </class> 
</hibernate-mapping> 

나는 내 hibernate.reveng.xml는 다음과 나의 hibernate.reveng.xml 구문 오류가 파일에 나타날 때마다 내가 받는다는 오류가 발생할로, hibernate3-maven-plugin 읽을되고, 그래서 pom.xml가 될 것으로 보인다 알고 정확하고 hibernate.reveng.xml은 구문 상 정확합니다.

실마리가 있습니까?

답변

4

결국 나를 위해 일한 코드 아래. 난 그냥 소문자 (I 실제로 이해하지 않도록 내 DDL에 대문자를 사용하지만,이 작품)에 order 테이블 이름을 전달했다. 또한 schema 속성을 제공해야합니다. <key-column name="pkey"/>은 선택 사항입니다 (최대 절전 명명 규칙을 따를 경우). 답변에 대한

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-reverse-engineering 
SYSTEM "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" > 

<hibernate-reverse-engineering> 
    <table name="orders" schema="public"> 
     <primary-key> 
      <!-- setting up a specific id generator for a table --> 
      <generator class="sequence"> 
       <param name="sequence">ORDERS_ORDER_ID_seq</param> 
      </generator> 
     </primary-key> 
    </table> 
</hibernate-reverse-engineering> 
+0

이것은 유망 해 보이지만, 내 경우에는 Hibernate가'table' 태그를 무시하고'table-filter' 만 처리하고 있습니다. 나중의 Hibernate는'primary-key' 블록이 삽입 될 때 불평합니다. –

3

당신 (이 내가 documentation 또는 this thread에서 볼 것입니다) <param name="table">...</param>으로 시도 할 수 있습니다. 그래서 이런 식으로 :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-reverse-engineering 
SYSTEM "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" > 
<hibernate-reverse-engineering> 
    <table name="ORDERS"> 
     <primary-key> 
      <!-- setting up a specific id generator for a table --> 
      <generator class="sequence"> 
       <param name="table">ORDERS_ORDER_ID_seq</param> 
      </generator> 
      <key-column name="ORDER_ID"/> 
     </primary-key> 
    </table> 
</hibernate-reverse-engineering> 
+0

덕분에이 솔루션을 찾는 나를 도왔다. 하지만'name' 속성은 문제가 아닙니다. 즉,'table'과'sequence' 둘 다 당신이 필요로하는 것에 따라 잘 작동합니다. 내 질문에 맞는 코드를 업데이트했다. – mmm

+0

@mmm : 글쎄, 내 대답은 도움을하지만 방법을 잘 ... 당신이 (즉, 당신이 무엇을해야하는지 사실입니다) 답변으로 솔루션을 게시과 이용 약관을 읽고 동의를 자유롭게 :) 환영합니다. –

+0

확인을 클릭하여 해결책을 답변으로 추가하십시오. 당신의 대답은'schema' 애트리뷰트가 누락 된 것을 발견 한 또 다른 토론을 지적함으로써 도움이되었습니다 :). – mmm

관련 문제