Hibernate:使用JPA在单个实体中的两个序列

时间:2011-06-16 17:55:40

标签: hibernate jpa sequence hibernate-annotations

我有一个使用JPA注释的映射类,我希望它为两个字段使用两个单独的序列:

@Entity
@Table(name="my_table", schema="schema") 
@SequenceGenerator(name="sequence",sequenceName="schema.local_key_sequence")
@SequenceGenerator(name="orderSequence",sequenceName="schema.message_received_sequence")
public class MyClass
{
    @Id
    @Column(name="unique_key",unique=true)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequence")
    private long id; 

    @Column(name="sequence_received")        
    @GeneratedValue( strategy = GenerationType.SEQUENCE,generator="orderSequence" )
    private long sequenceReceived;
    [...]
}

但是,JPA禁止我在实体中使用@SequenceGenerator。我该怎么办呢。

注意:为了澄清,我希望从local_key_sequence的下一个值自动生成ID,并从message_received_sequence自动生成sequenceReceived。

1 个答案:

答案 0 :(得分:0)

您只能在主键上使用Generated by database value。

然而,如果只有字段 sequenceReceived 也是Id(复合ID的一部分),Hibernate(Hibernate Annotations项目)可以支持此功能。