2014-02-17 1 views
0

나는 Hibernate에 익숙하지 않으며 질문은 "Generator 클래스가 Hibernate에서 ID 태그를 필요로 하는가?"이다.Generator 클래스는 Hibernate에서 ID 태그가 필요합니까?

내 테이블에 아래에 언급 된 트리거가 있고 내 테이블이 기존 테이블이며 records.Just로 코드가 네이티브 SQL에서 최대 절전 모드 세션으로 변경되었습니다. 이 경우 "Generator 클래스가 Hibernate에서 ID 태그를 필요로 하는가?"입니다. 여기에서 필자의 예외는 다음 시퀀스 값을 삽입해야한다는 기록이다.

삽입 호출 호출 이전에 다음 ID 값을 생성하고 삽입이 발생한다고 가정합니다. 그래서 hbm 파일에서 생성자 클래스가 필요하거나 생성자가 사용해야하는 수단이 필요하면?

감사합니다 ... 난 당신이 질문 제목에서 질문하고 그 대답은 아니, 당신은 필요하지 않습니다 어떤 추론하는거야

답변

0

을 ...이 점에서 제발 도와주세요 a) 당신의 ID가 Hibernate에 의해 생성되지 않는 값이 될 것임을 지정하고, b) 당신의 ID가 생성 될 방법을 지정하고자하는 경우에만, 당신의 ID가 작동하기위한 @GeneratedValue 주석. 당신이해야 할 일을 생각

은 이것이다 :

@Entity 
@Table 
public class Foo{ 
    @Id 
    @GeneratedValue(generator = "applicationLockSequence") 
    @SequenceGenerator(name = "applicationLockSequence" sequenceName = "SEQ_APPLICATION_DATA_LOCK_PK") 
    private int id; 
.... 
} 

이 기본적으로 그 이름을 가진 데이터베이스에 순서가 있음을 지정하고, Hibernate는 개체 때 ID를 할당하는 순서를 사용해야 그것은 구원받습니다. 비록 유효한 방법이기는하지만 트리거를 사용하여 데이터베이스 레벨에서이를 수행 할 필요는 없습니다. 방아쇠를 당길 원하면 @GeneratedValue@SequenceGenerator을 사용하지 마십시오.

귀하의 질문에 대한 답변입니다.

TL; DR OP는 최대 절전 모드 매핑을 위해 .hbm 파일을 사용합니다. 여기에 주어진 : How To Use Sequence In Hibernate As A Property In XML Mapping

<id name="id" column="item_id> 
    <generator class="sequence"> 
     <param name="sequence">SEQ_APPLICATION_DATA_LOCK_PK</param> 
    </generator> 
</id> 

는이 작업을 수행하는 데 필요한 모든해야한다.

+0

답변에 따라 hbm 파일에서 Generated 클래스를 사용할 필요가 없습니다. 쓰다? org.hibernate.id.IdentifierGenerationException : save()를 호출하기 전에이 클래스의 ID를 수동으로 할당해야합니다 : ApplicationDataLock – Subbu

+0

Ahh, 매핑을 지정하기 위해 hbm 파일을 사용하고 있습니까? 귀하의 ID에 대한 생성이 트리거에 의해 데이터베이스 레벨에서 일어나기 때문에 Generated를 포함시켜야한다고 생각하지 않습니다. 이것이 의미하는 바는 개체의 ID를 얻어야하는 상황에 처한 경우 데이터베이스에 저장 한 다음 개체를 ID로 채우도록 데이터베이스를 쿼리해야한다는 것입니다. 모든 최대 절전 모드에서는 개체에 ID라는 필드가 있다는 것을 알아야합니다. 사용자가 지정하지 않으면 필드가 생성되는 방식에 상관 없습니다. 시도해보고 알려주세요 – JamesENL

+0

트리거를 사용하지 않고 시퀀스를 사용하려면 hbm 파일의 링크에있는 다음 구성을 사용하십시오. http://stackoverflow.com/questions/5082175/how-to-use-sequence-in-hibernate-as-a-property-in-xml-mapping – JamesENL

관련 문제