【发布时间】:2016-04-08 19:03:27
【问题描述】:
伙计们,我非常想知道如何将 EntityManager.getReference 与 1 个以上的主键一起使用,因为当我想更新数据时总是会出错, 错误消息有点像:
[EL Fine]: sql: Connection(1713950866)--SELECT Category, SubCategory, Code, CreatedBy, CreatedDateTime, IsActive, Remarks, UpdatedBy, UpdatedDateTime, Value FROM master.sysParameter WHERE (((Category = ?) AND (子类别 = ?)) AND (代码 = ?)) 绑定 => [acm, acm, acm] javax.persistence.EntityNotFoundException:找不到 id 的实体:acm 在 org.eclipse.persistence.internal.jpa.EntityManagerImpl.getReference(EntityManagerImpl.java:1398)
在我的代码中我想定义 3 个变量,但我只得到 1 (acm)。 这是我的代码示例:
public boolean updateSysParameter(MasterSysParameterEntity masterSysParameter) {
// TODO Auto-generated method stub
boolean retVal = false;
try{
MasterSysParameterEntity updateSysParameter;
em = getEntityManagerFactory();
em.getTransaction().begin();
System.out.println("masterSysParameter.getCategory() => " +masterSysParameter.getCategory());
updateSysParameter = em.getReference(MasterSysParameterEntity.class, masterSysParameter.getCategory());
updateSysParameter = em.getReference(MasterSysParameterEntity.class, masterSysParameter.getSubCategory());
updateSysParameter = em.getReference(MasterSysParameterEntity.class, masterSysParameter.getCode());
updateSysParameter = em.merge(masterSysParameter);
em.getTransaction().commit();
retVal = true;
}catch (Exception e) {
if(em != null && null != em.getTransaction())
em.getTransaction().rollback();
e.printStackTrace();
} finally {
if (em != null) {
em.close();
}
}
return retVal;
}
非常感谢您的任何建议和帮助,这真的很重要
【问题讨论】:
-
如果有多个“Id”字段,那么您应该为该类传入一个“IdClass”类型的对象
标签: java jpa entitymanager zk