EclipseLink使用GenerationType.Identity对序列号进行编号

时间:2012-05-25 02:11:10

标签: jpa primary-key eclipselink generator

扩展此问题Why does eclipselink consume the whole allocationSize each time it's rebooted? 我想知道这个问题的正确解决方案是什么,该帖子中唯一的答案建议切换到我已经完成的IDENTITY策略,但我无法看到这些变化。分配大小50仍然有效。有没有人有关于如何基于每个实体(表)生成顺序标识符(1,2,3)而不是所有表都可访问的单个序列的任何示例?

1 个答案:

答案 0 :(得分:0)

您有TableGenerator注释用于此目的。

@Entity
public class Employee {

    @Id
    @TableGenerator(name="TABLE_GEN", table="SEQUENCE_TABLE", pkColumnName="SEQ_NAME",
        valueColumnName="SEQ_COUNT", pkColumnValue="EMP_SEQ", allocationSize = 500, initialValue = 1)
    @GeneratedValue(strategy=GenerationType.TABLE, generator="TABLE_GEN")
    private long id;
    ...
}

@Entity
    public class PaySlip {

        @Id
        @TableGenerator(name="SECOND_TABLE_GEN", table="SECOND_SEQUENCE_TABLE", pkColumnName="SEQ_NAME",
            valueColumnName="SEQ_COUNT", pkColumnValue="SECOND_EMP_SEQ", allocationSize = 500, initialValue = 1)
        @GeneratedValue(strategy=GenerationType.TABLE, generator="SECOND_TABLE_GEN")
        private long id;
        ...
    }

确保所有名称 / * table *和 pkColumnValue 字段值都是唯一的。

<强>参考