2011-03-23 78 views
1

我有以下代碼。當我調用remove時,我傳入了一個從entityManager.getReference獲得的代理。但是entity.getClass()失敗。我如何獲得代理從代理對象中獲取類

public <T extends BaseEntity> void remove(T entity) throws RemoveException { 
    //get the actual object 
    entity = (T)getEntityManager().find(entity.getClass(), entity.getId()); 
    //delete the object 
    getEntityManager().remove(entity); 

} 

Unknown entity: com.merc.domain.EventLog_$$_javassist_3; nested exception is java.lang.IllegalArgumentException: Unknown entity: com.merc.domain.EventLog_$$_javassist_3 
org.springframework.dao.InvalidDataAccessApiUsageException: Unknown entity: com.merc.domain.EventLog_$$_javassist_3; nested exception is java.lang.IllegalArgumentException: Unknown entity: com.merc.domain.EventLog_$$_javassist_3 

回答

2

我可能是錯的類信息......但實際上你把你的實體到功能,只需再得到它的class和id來找到它,然後將其刪除?我猜想只是放棄行:

entity = (T)getEntityManager().find(entity.getClass(), entity.getId()); 

它應該工作。

+0

我這樣做的原因是,如果對象不是持久的上下文而不是在上下文中加載它,然後刪除。不知道如何避免這種情況 – user373201 2011-03-23 14:33:09

+0

這引發了一個問題,如果它不在上下文中,你會如何得到該對象? – Arne 2011-03-23 14:38:49

+0

您正在與框架戰鬥...不要嘗試修復「刪除」方法,但找到並修復問題的原因。 – Arne 2011-03-23 14:44:27