我在eclipseLink中面临一个常见但令人讨厌的问题。我只是想使用eclipseLink运行此查询:
列出organizationalEntityEntityList = EntityManager.createQuery(“从OrganizationUnitEntity o中选择o,其中o.unitId =?1”)。setParameter(1,userTypeDomain.getUnitId())。getResultList();
OrganizationUnitEntity OrganizationUnitEntity = OrganizationUnitEntityList.get(0);
// 1作为参数传递
OrganizationUnitEntity是:
公共类OrganizationUnitEntity {
@Id
private int unitId;
private String unit;
getters and setters...
}
但是我得到的例外是:
在工作单元克隆中遇到空或零主键
现在,由于数据库中没有null或0主键,为什么要这个呢?
最佳答案
发生异常的地方在哪里-您提到正在执行查询,但是它是否在执行查询之前尝试刷新?您可以尝试在查询之前调用flush,因为这可能是因为您的EM包含一个不应包含0 / null pk的实体。如果在查询后发生,请检查查询的SQL将返回什么结果。尝试将EclipseLink日志记录设置为最佳状态:如果仍然无法使用以下方法打印出缓存中的内容:JPAHelper.getEntityManager(em).getActiveSession()。getIdentityMapAccessor()。printIdentityMaps();