2011-04-19 4 views
1

Hibernate는 "다음 시퀀스 값을 얻을 수 없습니다"oracle

이 엔터티를 최대 절전 모드로 저장하려고하면이 오류가 could not get next sequence value 발생합니다.

package beans; 

import javax.persistence.*; 

@Entity 
@Table(schema = "EVGENY") 
public class Article { 
    @SequenceGenerator(name="ArticleGen", sequenceName="ARTICLESEC") 
    @Id 
    @GeneratedValue(generator= "ArticleGen") 
    private int id; 
    @Column(name="title") 
    private String title; 
    @Column(name="text") 
    private String text; 
    @Column(name="postat") 
    private String postat; 
    @ManyToOne 
    @JoinColumn(name = "USER_ID") 
    private UserAcc user; 

    public Article(){ 
    } 

    Get Set...  

} 

insert into article (title) values('asdfaf'); 

Oracle SQL Developer에서이 insert into article (title) values('asdfaf');은 정상적으로 작동합니다.

id 변수를 명시 적으로 설정하면 (Article a = new Article();a.setId(3);) 다 괜찮습니다. 시퀀스의 이름을 두 번 확인했습니다.

+1

하이버 네이트가 연결되어있는 사용자로 로그인 할 때 다음 순서 값을 선택할 수 있습니까? 이중에서 ARTICLESEC.nextval을 선택하십시오. – MarkOfHall

+0

예, 그렇게 생각합니다. 나는 완벽하게 작동하는 또 다른 엔티티를 가지고있다. 새로운 시퀀스를 사용하고 데이터베이스를 다시 시작하고 엔티티를 다시 쓰려고합니다. 희망이 뭔가 작동합니다. –

답변

0

이 예외를 얻는 데는 많은 이유가 있습니다. 어쩌면 질문을 확인하고 문제에 대한 자세한 정보를 알려줄 수 있습니다.

  • 'hibernate.dialect'가 Oracle으로 설정되어 있는지 확인하십시오.
  • 시퀀스 ok (schemata, select 등)에 대한 사용 권한은 무엇입니까?
  • 테이블 뒤에 트리거가있어서 plsql 오류가 발생합니까?
  • 삽입을 끊을 수있는 다른 plsql은 무엇입니까?
  • 트랜잭션이 손상 되었습니까?
  • 롤백을 위해 트랜잭션이 표시되도록 작성 (예 : 부실 상태 또는 바운스) 호출 전에 예외 (때로는 무음)가 발생 했습니까?
  • 예외가 있기 전에 연결 오류가 있습니까?
  • 엔티티가 이미 연결되어있을 수 있습니다 (포함되어 있는지 확인)?
  • 예외 해결 자나 번역자를 추가 할 수있는 스프링 또는 다른 프레임 워크를 사용합니까?
  • oracle database의 버전을 사용합니까? 10 또는 11? 사용 된 드라이버가 맞습니까?
  • 거기에 어떤 값도 반환하지 않는 findSingle 호출이 있습니까?
1

시퀀스에 대한 사용자 권한을 확인하십시오. 대개 그랜트 문제입니다

관련 문제