2012-04-27 2 views
2

я создал сходящуюся последовательность называется hibernate_sequnce с помощью следующей командыкак генерировать сходящуюся последовательность в спящем режиме

create sequence hibernate_sequence start with 400; 

Это мой спящего режим аннотированного дао

@Entity 
@Table(name="T_BIZ_TERM") 
public class BizTerm implements Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = -3056055722354292136L; 

    private Long bizTermId; 
@Id 
    @GeneratedValue() 
    @Column(name="BIZ_TERM_ID") 
    public Long getBizTermId() { 
     return bizTermId; 
    } 
    public void setBizTermId(Long bizTermId) { 
     this.bizTermId = bizTermId; 
    } 
} 

Для того, чтобы вставить новую запись в таблице спящего режим генерирует неправильный запрос, чтобы получить следующее значение sequnce. Hibernate всегда выдает этот запрос. Независимо от того, что я делаю.

select nextval(hibernate_sequnce) 

Я использую Oracle 10G, который сообщает следующее сообщение об ошибке всегда ..

ORA-00923: FROM keyword not found where expected 

Запрос должен быть выдан select hibernate_sequnce.nextval from dual; что теперь делать, я упускаю что-нибудь?

ответ

0

Я делаю что-то подобное для последовательностей Oracle.

@Id 
@Column(name = "BIZ_TERM_ID") 
@SequenceGenerator(name = "myKeySeq", sequenceName = "hibernate_sequence ", allocationSize = 20) 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "myKeySeq") 
private Long bizTermId;; 

Я бы назвал последовательность лучше, чем hibernate_sequence. попробуйте что-то вроде biz_term_sequence. Вам понадобятся разные последовательности для первичного ключа таблицы.

+0

также, как предложил Мульмот, обеспечить, чтобы ваш диалект был установлен! –

0

Вы настроили диалект Oracle?

<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
Смежные вопросы