Java 表有时不会通过Hibernate本机查询进行更新

Java 表有时不会通过Hibernate本机查询进行更新,java,sql,hibernate,ejb-3.0,Java,Sql,Hibernate,Ejb 3.0,我有一个实体,我们称它为X(实体有一个@Id)。 实体映射到一个表,我们称之为:X_表。 它还包含一个 @ManyToOne @JoinColumn(name = "JOIN_COLUMN") YClass joinColumn;//another entity 我正在使用以下代码: X x = new X(xDTO);//just a copy constructor, nothing fancy, without id x.joinColumn = null; entityManager.

我有一个实体,我们称它为X(实体有一个@Id)。 实体映射到一个表,我们称之为:X_表。 它还包含一个

@ManyToOne
@JoinColumn(name = "JOIN_COLUMN")
YClass joinColumn;//another entity
我正在使用以下代码:

X x = new X(xDTO);//just a copy constructor, nothing fancy, without id
x.joinColumn = null;
entityManager.persit(x);
entityManager.flush();
join_column_id = somne_function();//irelevant
Query q = entityManager.createNativeQuery(
        "UPDATE  X_TABLE t SET t.JOIN_COLUMN=" + join_column_id + " WHERE " + " t.id= "    + x.getId());
q.executeUpdate();
q.flush();
如果有人想知道的话,这样做的要点是join_列是另一个表的外键,在不同的数据库中,我通过本机查询来设置它,因为包含X_表的同一个数据库中不存在相应的表。但这不是问题所在。Enity映射和关系都很好,我可以保证

上面的代码在一个循环中对多个记录执行,有时对所有记录都可以正常工作(保存并更新表)。但有时,它对循环中除最后一条记录之外的所有记录都可以正常工作(即它保存记录,但不在数据库中执行更新)。没有抛出异常,用于hibernate的JBoss服务器调试日志显示了使用正确值进行的更新,没有错误。然而,该表在JOIN_列中只包含一条记录的null,我不知道为什么。有什么想法吗

PS:该服务是一个容器管理的事务

几点建议:

  • 检查受executeUpdate()影响的行数
  • 您的交易政策是什么?是否定义了TransactionManager
    • 几点建议:

      • 检查受executeUpdate()影响的行数
      • 您的交易政策是什么?是否定义了TransactionManager