首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Eclipselink Expressionbuilder时缺少描述符异常

使用Eclipselink Expressionbuilder时缺少描述符异常
EN

Stack Overflow用户
提问于 2012-03-19 13:59:29
回答 2查看 5.2K关注 0票数 2

我有一个实体Person,其中包含字段、字符串名称、字符串指定。当我尝试使用Eclipselink ExpressionBuilder,查询时:

代码语言:javascript
复制
    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)

可能是什么原因?提前谢谢..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-20 08:44:30

我终于明白了。必须使用org.eclipse.persistence.sessions.server.ClientSession而不是DatabaseSession。

代码语言:javascript
复制
    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。

这解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2012-03-19 15:28:11

您没有为Person添加描述符。您需要映射它才能查询它。

还可以考虑使用JPA。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9771561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档