使用 Glassfish 3.1.2 取消部署和部署 WebArchive (.war) 时,我有一个奇怪的效果。
$ asadmin undeploy myWebApp; asadmin deploy target/myWebApp.war
它正常部署,但是当我通过实体管理器获取实体 bean 时,它会引发异常:
[#|2012-12-11T15:26:09.772+0100|SEVERE|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=119;_ThreadName=Thread-2;|java.lang.ClassCastException: org.YourEntity cannot be cast to org.YourEntity
在 q.getSingleResult() 调用中抛出异常。
@PersistenceContext(unitName = "org.my-PU")
private EntityManager em = Persistence.createEntityManagerFactory("org.my-PU").createEntityManager();
...
public YourEntity findYourEntity() throws Exception {
TypedQuery<YourEntity> q = em.createQuery("select ye from YourEntity ye",
YourEntity.class);
return q.getSingleResult();
}
我在项目中使用以下与 JPA 相关的依赖项:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
</dependency>
当我重新启动 glassfish 时,不再发生异常。取消部署/部署具有类似设置的 .ear 时,我从未见过此问题。有没有人看到错误并知道如何克服它?这不是一个大问题,但很烦人。