Java 切换@GeneratedValue后性能急剧下降(策略=GenerationType.SEQUENCE)

Java 切换@GeneratedValue后性能急剧下降(策略=GenerationType.SEQUENCE),java,oracle,openjpa,Java,Oracle,Openjpa,我正在使用OpenJPA,但我的应用程序只使用原始SQL样式(是的,出于传统和性能原因)。我们有一个表,比如说ZIP,它有一个复合主键-(ZIP\u ID,LINK\u ID),其中包含ZIP\u代码 在上一个版本之前,我们有类似这样的Zip.java @实体 @表(/*replaceregexp:removed“schema=…,”*/name=Zip.Table\u name) @IdClass(com.xxx.yyy.zzz.jpa.ZipId.class) 公共类Zip实现ZipIfac

我正在使用OpenJPA,但我的应用程序只使用原始SQL样式(是的,出于传统和性能原因)。我们有一个表,比如说ZIP,它有一个复合主键-(ZIP\u ID,LINK\u ID),其中包含ZIP\u代码

在上一个版本之前,我们有类似这样的Zip.java

@实体
@表(/*replaceregexp:removed“schema=…,”*/name=Zip.Table\u name)
@IdClass(com.xxx.yyy.zzz.jpa.ZipId.class)
公共类Zip实现ZipIface{
@身份证
@列(name=“ZIP_ID”,长度=18)
私人长裤;
@身份证
@列(name=“LINK\u ID”,长度=10)
私有长链接;
其中ZipId类计算了与邮政编码相关的唯一字段

但在增加创建ZIP表的数据之后,我们得到了错误

尝试分配id “com.xxx.yyy.zzz.jpa.Zip-2133550035008::590503870”到新实例 “com.xxx.yyy.zzz.jpa。LdmZip7Ext@16d2b586“失败;已存在一个 一级缓存中具有此id的对象。必须删除此对象(在 重复使用其id之前的事务(上一个事务或当前事务)。此 当水平或垂直映射类时,也可能发生错误 使用自动增量应用程序标识,不使用层次结构 应用程序标识类的定义

我检查了ZipId.class,发现有很多冲突,所以决定用一列主键(ZIP_ID)替换复合主键(ZIP_ID,LINK_ID)

@实体
@表(/*replaceregexp:removed“schema=…,”*/name=Zip.Table\u name)
公共类Zip实现ZipIface{
@身份证
@GeneratedValue(策略=GenerationType.SEQUENCE)
@列(name=“ZIP_ID”,长度=18)
私人长裤;
@基本的
@列(name=“LINK\u ID”,长度=10)
私有长链接;

更改后,运行应用程序的时间从5小时增加到60小时。也许有人可以建议我在这种情况下应该使用哪种策略,或者可能应该使用完全不同的方法?

您使用的是GenerationType.SEQUENCE,但没有用@SequenceGenerator指定Oracle序列名称。