2016-02-25 2 views
0

У нас есть приложение, в котором сопоставление выполняется через файлы orm.xml и теперь пытается добавить annotaitons. Можно ли объединить оба.org.hibernate.hql.internal.ast.QuerySyntaxException: сотрудники не отображаются

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0"> 
    <persistence-unit name="disc" transaction-type="JTA"> 
     <jta-data-source>disc.jdbc.DataSource.OLTP</jta-data-source> 

     <!-- List of Mapping files --> 
     <mapping-file>META-INF/discCommon.orm.xml</mapping-file> 
     <mapping-file>META-INF/discTerminology.orm.xml</mapping-file> 

     <class>com.model.correspondence.Employees</class> 
     <class>com.model.correspondence.AbstractEmployees</class> 
     </persistence-unit> 
</persistence> 

в классе сущностей

@Entity 
@Table(name = "TEST", schema="company") 
public class Employees extends AbstractEmployees{ 

private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "EMPLOYEE_ID", unique=true, nullable = false) 
    private long employeeId; 

    @Column(name = "DESCRIPTION", nullable = false) 
    private String description; 

Serivceclass

private static final String SEARCH_FROM_ALL_EMPLOYEES= " select o from " + Employees.class.getSimpleName()+ " o WHERE " + 
    " upper(o.description) LIKE :desc"; 

Query query = entityManager.createQuery(SEARCH_FROM_ALL_EMPLOYEES); 
     query.setParameter("desc", "%" + desc.toUpperCase() + "%"); 
     @SuppressWarnings("rawtypes") 
     List employeeList= query.getResultList(); 

orm.xml файлы работают, но класс объектов аннотаций не получают карту. Ниже ошибка

Вызванный: org.hibernate.hql.internal.ast.QuerySyntaxException: Служащие не отображается [выберите из сотрудников о о где верхний (o.description) LIKE: убывание] * в орг. hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister (SessionFactoryHelper.java:180) at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement (FromElementFactory.java:110) at org.hibernate. hql.internal.ast.tree.FromClause.addFromElement (FromClause.java:93) at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement (HqlSqlWalker.java:324) at org.hibernate.hql.internal. antlr.HqlSqlBaseWalker.fromElement (HqlSqlBaseWalker.java:3420) в org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList (HqlSqlBaseWalker.java:3309)

Благодаря

ответ

0

Может быть, вы можете попробовать добавить эту строку в persistence.xml

<exclude-unlisted-classes>false</exclude-unlisted-classes> 

Иногда из-за различной конфигурации в наших проектах генерируемые классы не были запрещены в пути, так как JPA (и используемая вами реализация) может автоматически сканировать.

Итак, в моем случае я использовал эту строку, чтобы рассказать о реализации JPA, которая должна отображать классы, которые я помещаю в persistence.xml, и не ожидаю автоматического сканирования.

В этом случае возможность для persistence.xml будет

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0"> 
    <persistence-unit name="disc" transaction-type="JTA"> 
     <jta-data-source>disc.jdbc.DataSource.OLTP</jta-data-source> 

     <!-- List of Mapping files --> 
     <mapping-file>META-INF/discCommon.orm.xml</mapping-file> 
     <mapping-file>META-INF/discTerminology.orm.xml</mapping-file> 

     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <class>com.model.correspondence.Employees</class> 
     <class>com.model.correspondence.AbstractEmployees</class> 
     </persistence-unit> 
</persistence> 

Я надеюсь, что это работает для вас ...

Смежные вопросы