spring + jpa = QuerySyntaxException: table is not mapped

124
20 ноября 2019, 14:50

Учусь работать с JPA. Есть MySQL таблица с полями a,b,c,d,e

spring-app.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation=
               "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <tx:annotation-driven/>
    <context:component-scan base-package="ru"/>
    <bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
        <property name="packagesToScan" value="ru"/>
    </bean>
    <bean id="jpaVendorAdapter"
          class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="database" value="MYSQL" />
        <property name="showSql" value="true"/>
        <property name="generateDdl" value="false"/>
        <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
    </bean>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.springframework.jdbc.datasource.DriverManagerDataSource" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/database" />
        <property name="username" value="user" />
        <property name="password" value="password" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <bean id="transactionManager"  class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="emf"/>
    </bean>
    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
</beans>

CdrItem.Class

@NamedQueries({
        @NamedQuery(name = CdrItem.GET_ALL, query = "SELECT i.a, i.b, i.c FROM CdrItem i")})
@Entity
@Table(name = "table")
public class CdrItem {
    public static final String GET_ALL = "CdrItem.getAll";
    @Id
    private String id;
    @Column(name = "a", nullable = false)
//    @NotNull
    private String a;
    @Column(name = "b", nullable = false)
//    @NotBlank
    private String b;
    @Column(name = "c", nullable = false)
//    @NotBlank
    private String c;
    public CdrItem(String a, String b, String c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    public CdrItem() {
    }
далее геттеры и сеттеры
...
}

interface JpaRepository.class

public interface JpaRepository {
    List<CdrItem> getAll();
}

JpaRepositoryImpl.Class

@Repository
@Transactional
public class JpaRepositoryImpl implements JpaRepository {
    @PersistenceContext
    private EntityManager em;
    @Override
    public List<CdrItem> geAll() {
        return em.createNamedQuery(CdrItem.GET_ALL, CdrItem.class).getResultList();
    }
}

и когда я вызываю getAll(), я получаю:

Caused by: org.hibernate.HibernateException: Errors in named queries: 
CdrItem.getAll failed because of: org.hibernate.hql.internal.ast.QuerySyntaxException: table is not mapped [SELECT i.a, i.b, i.c FROM table i]

Я не пойму, что не так... не видно таблицы table или не может найти записи, удовлетворяющие select'у ?

READ ALSO
Нарушает ли JPA принцип DDD?

Нарушает ли JPA принцип DDD?

Собственно, в заголовке вопросАннотации JPA привязывают нас к самому JPA

141
Реализация Serialization API

Реализация Serialization API

Ребят нужна помощь, как реализовать сериализацию\десериализацию без использования serialization api, и соответственно ObjectOutputStream тк он входит в этот...

130
Почему не работает условие в if?

Почему не работает условие в if?

не могу разобраться как в статических методах правильнее описать условие

126
Какой из NavigationView был свёрнут?

Какой из NavigationView был свёрнут?

Есть два NavigationView на одном экране

128