环境:
Hibernate5.1,JPA1.8,Oracle12,Spring 4.3.9
序列:
CREATE SEQUENCE "SEQ_PROBLEM" MINVALUE 0 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 1 CACHE 100 NOORDER NOCYCLE;
实体配置:
@Id
@SequenceGenerator(name = "PROBLEM_ID_GENERATOR", sequenceName = "SEQ_PROBLEM", allocationSize = 50)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PROBLEM_ID_GENERATOR")
private long id;
测试步骤:
java.sql.SQLIntegrityConstraintViolationException:ORA-00001:违反了唯一约束(******。PK_PROBLEM)
我检查了代码,并且PooledOptimizer类未应用来自oracle的50个序列,因此我猜第二台服务器无法获取正确的序列号。由于性能原因,我不想将allocationSize设置为1。这种情况有什么想法?谢谢。