Jpa 我如何更新EclipseLink用于@TableGenerator的行或在该表中插入新行?

Jpa 我如何更新EclipseLink用于@TableGenerator的行或在该表中插入新行?,jpa,jdbc,eclipselink,Jpa,Jdbc,Eclipselink,我想将一个基于JDBC的应用程序集成到运行在GlassFish中的JavaEE应用程序中,该应用程序使用EclipseLink JPA 2.5和MariaDB(MySQL克隆) 基于JDBC的应用程序将数据从平面文件导入到一些数据库表中,并需要通过执行以下命令来更新主键的下一个序列值: UPDATE dbtable SET nextid = 4711 WHERE name = 'table4Import'; 使用标准JDBC连接。此语句引发SQL超时异常,因为该行已锁定。它似乎被Eclipse

我想将一个基于JDBC的应用程序集成到运行在GlassFish中的JavaEE应用程序中,该应用程序使用EclipseLink JPA 2.5和MariaDB(MySQL克隆)

基于JDBC的应用程序将数据从平面文件导入到一些数据库表中,并需要通过执行以下命令来更新主键的下一个序列值:

UPDATE dbtable SET nextid = 4711 WHERE name = 'table4Import';
使用标准JDBC连接。此语句引发SQL超时异常,因为该行已锁定。它似乎被EclipseLink锁定,EclipseLink使用相同的表作为其表生成器。以下是包含序列值的表格(部分):

CREATE TABLE dbtable (
  dbtid bigint not null primary key,
  dbtname varchar ( 50 ) not null,
  dbtnextid bigint );
这是JPA实体之一的代码:

@Entity
@Access(AccessType.PROPERTY)
@Table( name = "table4Import" )
public class Table4ImportClass {

  private Long id = null;

  @NotNull
  @Id
  @TableGenerator( name="table4Import", allocationSize=1,
    table="dbtable", pkColumnName="dbtname",
    pkColumnValue="table4Import", valueColumnName="nextid" )
  @GeneratedValue( generator="table4Import", strategy=GenerationType.TABLE )
  public Long getId() { return this.id; }
  ...
附录:甚至不可能在该表中插入新行。日食似乎锁定了整张桌子。仍然可以从其他程序修改表(插入和更新)。锁定范围似乎是运行EclipseLink的JVM


附录2:将此作为一个bug放入EclipseLink bug tracker

需要更多信息,因为EclipseLink无法获得JVM范围的表或行锁。查看您的JDBC应用程序以及它是如何获取语句和锁的,并打开eclipselink日志以查看它发布了哪些语句Hi Arjan。你很可能指向了正确的方向。这个问题似乎与MySQL/MariaDB JDBC驱动程序有关。PostgreSQL不会出现这种情况。您能帮我设置日志以查看SQL语句吗。Eclipselink的基本信息不会产生任何结果。有关如何将Eclipselink日志设置为fine或finest以查看发布的SQL,请参阅。