我是Java Entities的新手,我从Query.getSingleResult()调用中得到了一些奇怪的问题。这是一段代码:
LoaPoliciesConfig policy = new LoaPoliciesConfig();
EntityManager em = getEntityManager();
try
{
Query q = em.createNamedQuery("LoaPoliciesConfig.findByName");
q.setParameter("policyName", policyName);
Object ret = q.getSingleResult();
policy = (LoaPoliciesConfig) ret;
}
经过多年的良好工作,这突然开始给我这个错误:
CRAAC.WebService.DataAccess.LoaPoliciesConfig cannot be cast to
CRAAC.WebService.DataAccess.LoaPoliciesConfig
首先,当重新启动服务器时,它就消失了,但是最后一次发生这种情况似乎仍然存在。
getSingleQuery()返回一个Object,到目前为止我在网上找到的所有文档似乎都表明这是首选的方法。所以,我的问题基本上是我在这段代码中做错了什么,或者只是服务器在这个过程中某处混淆了?
答案 0 :(得分:3)
我怀疑您的类路径上有2个LoaPoliciesConfig
类,以便从两个不同的类加载器加载/访问它们。
在这种情况下,来自一个类加载器的类X
与第二个类加载器的不等同到类X
,你会看到你所看到的混乱。检查您的类路径,环境中可用的类以及加载位置(通过getClass()
和getClassLoader()
)