таблица "" не существует, пропускается, таблица не отображается - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь собрать приложение при загрузке Spring, с postgres. Я использую docker -композит. Я получил сообщение об ошибке при попытке получить доступ к данным. Это исключение

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: table is not mapped [SELECT t FROM table t WHERE t.code = :code]
app_1         |     at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138)
app_1         |     at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
app_1         |     at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
app_1         |     at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:718)
app_1         |     at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:809)
app_1         |     at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23)

Метод TableRepository

    public Table getDataByCode(String tc) {
        try {
            TypedQuery<Table> q = em.createQuery("SELECT t FROM table t WHERE t.code = :code", Table.class);
            q.setParameter("code", tc);
            return q.getSingleResult();
        } catch (Exception exception) {
            exception.printStackTrace();
            return null;
        }
    }

вызывается функцией Table t = tableRepository.getDataByCode ("CCC ");

Моя таблица сущностей

package hello.world.entity;
import javax.persistence.*;

@Entity
@Table(name="table")
public class Table {
    @Id
    @Column(name="code", length=3, nullable=false)
    private String code;

    @Column(name="name", length=256, nullable=false)
    private String name;

    public Table() {
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

1 Ответ

1 голос
/ 02 февраля 2020

Вы можете сделать SELECT из таблицы с указанным полем c, реализующим интерфейс JpaRepository и использующим определение findByField(...), где Field - имя фактического поля, которое вы хотите добавить в WHERE предложение.
Если вы хотите сделать выбор по коду, вы можете сделать следующее:

@Repository
public interface TableRepository extends JpaRepository<Table, String> {

    List<Table> findByCode(String code);

}

Таким образом, вам не нужно добавлять реализацию кода, Jpa позаботится об этом для you.
Тогда вы можете назвать это просто так:

Table t = tableRepository.findByCode("CCC");

Помните, что в вашем файле application.properties должны быть некоторые свойства, подобные этим, для подключения к вашей базе данных:

## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres_demo
spring.datasource.username= rajeevkumarsingh
spring.datasource.password=

# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

Как вы можете найти в этой статье, например .

Дайте мне знать, если вам нужна дополнительная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...