sql-server-2005 - JPA/Hibernate/MS SQL Server 不返回生成的 id 值

标签 sql-server-2005 hibernate orm jpa identity

我正在将 Hibernate 实体管理器 3.5.1-Final 与 MS SQL Server 2005 一起使用,并尝试保留多个新实体。我的实体是这样注释配置的:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

调用后
entityManager.persist(newEntity)

我没有看到 generateId 集,它保持为 0。这会在持久化下一个新实体时导致以下异常:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [x.y.z.MyEntity#0]

我可以通过在持久化下一个实体之前从缓存中驱逐最近持久化的实体来解决这个问题,但这并不理想。插入后我需要做什么才能正确更新对象?

最佳答案

我有一个类似的问题,我解决了这个问题,这对我有用:

em.persist({ENTITY_TO_PERSIST});
em.flush();
em.refresh({ENTITY_TO_PERSIST});

刷新()方法成功了。

注意:在我的回答中,我假设您的数据库表已正确设置,其身份规范针对相关列设置为"is"。

关于sql-server-2005 - JPA/Hibernate/MS SQL Server 不返回生成的 id 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504064/

相关文章:

sql-server-2005 - varchar() 和 nvarchar() 之间奇怪的 SQL Server 2005 排序规则差异

c# - 进行大量查询时,asp.net 网站停止响应

java - Hibernate 期望 NUMBER 在空字段上得到 BINARY

java - 是否可以使用 hibernate 映射不同的字段类型?

c# - 层次结构中多类的 Fluent NHibernate 每个继承表 (TPH) 映射

php - 通过 PersistentCollection 对结果进行排序

sql - COALESCE 的逆

sql-server-2005 - 对某些列进行区分或分组,但对其他列则不然

java - 无法找到逻辑名称为 : product 的列

hibernate - 如何使用 JPA 2.0 文件配置 Hibernate?