Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从代理对象获取类_Java_Jpa - Fatal编程技术网

Java 从代理对象获取类

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

我有以下代码。调用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
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的服务方法周围放置了一个事务