2012-03-02 3 views
1

Моя цель заключается в том, что EJB должен генерировать последовательность, когда он генерирует таблицы из Entities. Как я могу это сделать?Как создать последовательность PostgreSql с JPA?

Я думал об этом, но в этом случае я использую только существующую последовательность. Я хотел бы, чтобы последовательность была создана JPA. Я думаю, это невозможно, или не так ли?

@Entity 
@Table(name = "CUSTOMER") 
@SequenceGenerator(name = "sb_sequence",sequenceName = "sb_sequence", initialValue=5420) 
public class Customer extends EntityBase 
{ 
    private static final long serialVersionUID = 3456353535358L; 

    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sb_sequence") 
    @Column(name = "CUS_SEQUENCE") 
    private long cusSequence; 
. 
. 
. 
} 

фона: Перед тем, как вставить первое значение в базу данных, мне нужно, чтобы получить первый порядковый номер (вероятно, с выбором NEXTVAL («последовательностями»);)

+0

Это действительно кажется, что это будет зависеть не от JPA, но от реализации JPA, чтобы генерировать DDL. Тем не менее, если вы хотите знать, какой идентификатор для объекта будет до того, как объект будет сохранен в хранилище, вам может потребоваться обработать вызов последовательности самостоятельно. Запуск 'select nextval ('sequence');' перед сохранением объекта с 'GenerationType.SEQUENCE' фактически приведет к созданию двух порядковых номеров. Также см. [Этот связанный вопрос] (http://stackoverflow.com/questions/3067986/calling-next-value-of-a-sequence-in-jpa). – ig0774

ответ

Смежные вопросы