我有一个实体Person,其中包含字段、字符串名称、和字符串指定。当我尝试使用Eclipselink ExpressionBuilder,查询时:
Project project=new Project();
Login login=new DatabaseLogin();
login.setUserName("root");
login.setPassword("root");
project.setLogin(login);
DatabaseSession session=project.createDatabaseSession();
ExpressionBuilder expBuilder=new ExpressionBuilder();
Expression expression=expBuilder.get("name").equalsIgnoreCase("SomeName");
Vector readAllObjects = session.readAllObjects(Person.class, expression);在执行最后一条语句时,将引发以下异常:
org.eclipse.persistence.exceptions.QueryException异常描述:异常描述:缺少类com.mycompany.entity.Person的描述符。查询: ReadAllQuery(referenceClass=Person)
可能是什么原因?提前谢谢..。
发布于 2012-03-20 08:44:30
我终于明白了。必须使用org.eclipse.persistence.sessions.server.ClientSession而不是DatabaseSession。
JpaEntityManager jpaEntityManager=em.unwrap(JpaEntityManager.class);
ClientSession session=jpaEntityManager.getServerSession().acquireClientSession();
ExpressionBuilder expBuilder=new ExpressionBuilder();
Expression expression=expBuilder.get("name").equalsIgnoreCase("SomeName");
Vector readAllObjects = session.readAllObjects(Person.class, expression);em是EntityManager。
这解决了这个问题。
发布于 2012-03-19 15:28:11
您没有为Person添加描述符。您需要映射它才能查询它。
还可以考虑使用JPA。
https://stackoverflow.com/questions/9771561
复制相似问题