Java 从代理对象获取类
我有以下代码。调用remove时,传入从entityManager.getReference获取的代理。但是entity.getClass()失败。如何获取代理的类信息Java 从代理对象获取类,java,jpa,Java,Jpa,我有以下代码。调用remove时,传入从entityManager.getReference获取的代理。但是entity.getClass()失败。如何获取代理的类信息 public <T extends BaseEntity> void remove(T entity) throws RemoveException { //get the actual object entity = (T)getEntityManager().find(entity.getCla
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
public void remove(T实体)抛出RemoveException{
//获取实际对象
entity=(T)getEntityManager().find(entity.getClass(),entity.getId());
//删除对象
getEntityManager().remove(实体);
}
未知实体:com.merc.domain.EventLog\u$$\ uJavassist\u3;嵌套的异常是java.lang.IllegalArgumentException:未知实体:com.merc.domain.EventLog\u$$\ uJavassist\u3
org.springframework.dao.InvalidDataAccessApiUsageException:未知实体:com.merc.domain.EventLog\u$$\ uJavassist\u3;嵌套的异常是java.lang.IllegalArgumentException:未知实体:com.merc.domain.EventLog\u$$\ uJavassist\u3
我可能错了。。。但是实际上你把你的实体放进函数中,只是为了得到它的类和id来再次找到它,然后删除它?我想你还是别说了吧:
entity = (T)getEntityManager().find(entity.getClass(), entity.getId());
它应该可以工作。我这样做的原因是,如果对象不在持久上下文中,请在上下文中加载它,然后删除。不确定如何避免这种情况这就提出了一个问题,如果对象不在上下文中,您将如何到达该对象?您正在与框架进行斗争。。。不要尝试修复“remove”方法,而是查找并修复问题的原因。我按照您的建议修复了remove,并在调用remove的服务方法周围放置了一个事务