Отсутствует исключение дескриптора при использовании Eclipselink Expressionbuilder - PullRequest
2 голосов
/ 19 марта 2012

У меня есть сущность Персона с полями Строковое имя и Строковое обозначение . Когда я попытался выполнить запрос, используя 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);

При выполнении последнего оператора выдается следующее исключение:

Исключение [EclipseLink-6007] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.QueryException Описание исключения: отсутствует дескриптор для [class com.mycompany.entity.Person]. Запрос: ReadAllQuery (referenceClass = Person)

В чем может быть причина? Заранее спасибо ...

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Наконец я понял.Вместо DatabaseSession пришлось использовать org.eclipse.persistence.sessions.server.ClientSession.

    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.

Это решило проблему.

0 голосов
/ 19 марта 2012

Вы не добавили дескриптор для Person.Вы должны отобразить его, чтобы иметь возможность запрашивать его.

Также рассмотрите возможность использования JPA.

...