Нераспознанные объекты и полностью определенные имена - PullRequest
0 голосов
/ 26 марта 2020

Наше приложение начало вызывать ошибки на промежуточном сервере после того, как мы развернули новый EAR:

org. apache .openjpa.persistence.ArgumentException: при синтаксическом анализе фильтра запросов "SELECT произошла ошибка" e ИЗ FooData e ГДЕ e.companyId =: companyId И e.fooId =: fooId ". Сообщение об ошибке: имя «FooData» не является распознанным объектом или идентификатором. Возможно, вы имели в виду RequestStatus, который близко соответствует. Известные имена сущностей: [RequestStatus, GlobalBalance, LocalBalance]

Мы удалили уязвимую версию и развернули предыдущую, но ошибки остались (?).

Это код, который выдает ошибочный запрос:

package com.example.my_project.model.facades;

import com.example.my_project.model.FooData;
import com.example.my_project.model.facades.interfaces.IFooDataDAO;
import javax.ejb.Stateless;
import javax.persistence.NoResultException;
import javax.persistence.Query;

@Stateless(name = "IFooDataDAO", mappedName = "IFooDataDAO")
public class FooDataDAO extends GenericDAO<FooData> implements IFooDataDAO {
    public FooDataDAO() {
        super(FooData.class);
    }

    @Override
    public FooData getFooByNumberId(String companyId, String fooId) {
        FooData foo = null;
        try {
            Query query = em.createQuery("SELECT e FROM FooData e WHERE e.companyId =: companyId AND e.fooId =: fooId")
                .setParameter("companyId", companyId)
                .setParameter("fooId", fooId);
            foo = (FooData) query.getSingleResult();
        } catch (NoResultException e) {
            return null;
        }
        return foo;
    }
}

Пробная ошибка привела к этому исправлению:

Query query = em.createQuery("SELECT e FROM com.example.my_project.model.FooData e WHERE e.companyId = :companyId AND e.fooId = :fooId")
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Почему это работает? Я уверен, что это просто подчеркивает предыдущую ошибку кодирования или конфигурации, но я даже не знаю, что искать. Буду признателен за любые рекомендации.

...