簡體   English   中英

當id(primay鍵)大於1時,如何獲取EntityManager.getReference?

[英]How can I get EntityManager.getReference when the id(primay keys) are more than 1?

伙計們,我拼命地知道如何將EntityManager.getReference與多個主鍵一起使用,因為當我想更新數據時總是會出錯,錯誤消息有點像:

[EL Fine]:sql:Connection(1713950866)-SELECT類別,子類別,代碼,CreatedBy,CreatedDateTime,IsActive,備注,UpdatedBy,UpdatedDateTime,來自master.sysParameter的值((((Category =?)AND(SubCategory =? ))AND(Code =?)) bind => [acm,acm,acm] javax.persistence.EntityNotFoundException:在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字段,則可以在實體上為復合ID定義一個@IdClass 因此,您調用em.getReference並將第二個參數作為“ IdClass”的實例傳遞。

MyIdClass myId = new MyIdClass(...); // Pass in whatever args your IdClass needs
MyEntity ent = em.getReference(MyEntity.class, myId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM