当前位置: 首页 > 知识库问答 >
问题:

psqlException:错误:关系“table_name”不存在

秦永望
2023-03-14

我使用PostgreSQL 10、Spring Boot 2.2.7.Release和pgAdmin 4来实现Postgres GUI

我有以下实体类:

@Entity
@Table(name = "\"TB03_TABLE_A\"")
public class VersionData {

    private int id;
    private String version;
    private String dataType;
    private int min;
    private int max;
    private String possibleValues;

    @Id
    @SequenceGenerator(allocationSize = 1, sequenceName = "\"TB03_TABLE_A_seq\"", name = "table_a_id_seq")
    @GeneratedValue(generator = "table_a_id_seq", strategy = GenerationType.SEQUENCE)
    @Column(name = "\"ID\"", unique = true, nullable = false)
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }


    @Column(name = "\"VERSION\"")
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }

    @Column(name = "\"DATATYPE\"")
    public String getDataType() {
        return dataType;
    }
    public void setDataType(String dataType) {
        this.dataType = dataType;
    }

    @Column(name = "\"MIN\"")
    public int getMin() {
        return min;
    }
    public void setMin(int min) {
        this.min = min;
    }

    @Column(name = "\"MAX\"")
    public int getMax() {
        return max;
    }
    public void setMax(int max) {
        this.max = max;
    }

    @Column(name = "\"POSSIBLE_VALUES\"")
    public String getPossibleValues() {
        return possibleValues;
    }
    public void setPossibleValues(String possibleValues) {
        this.possibleValues = possibleValues;
    }


}

我已经使用GUI PGADMIN4为ID列“TB03_TABLE_A_SEQ”创建了表“TB03_TABLE_A”和序列

@Service
public class VersionDataImpl{
    @Autowired
    private VersionDataRepo dataRepo;
    @PersistenceContext
    private EntityManager em;

    @Transactional
    public void copyVersion(String newBranch, String sourceBranch) {

        copyVersionData(newBranch, sourceBranch);


    }

    @Transactional
    private void copyVersionData(String newBranch, String sourceBranch) {
        List<VersionData> versionDataLs = mddRepo.getDataByVersion(sourceBranch);

        for (VersionData  versionData : versionDataLs) {
            VersionData mdd = new VersionData();
            versionData.setDataType(mddData.getDataType());
            versionData.setMax(mddData.getMax());
            versionData.setMin(mddData.getMin());
            versionData.setPossibleValues(mddData.getPossibleValues());
            versionData.setVersion(newBranch);
            //dataRepo.insertBranchData();
            em.persist(versionData);
        }

    }

}
@Repository
public interface VersionDataRepo extends JpaRepository<VersionData, Integer>{

    String insertBranch = "INSERT INTO public.\"TB03_TABLE_A\"(\"VERSION\", \"DATATYPE\", \"MIN\", \"MAX\", \"POSSIBLE_VALUES\")\r\n" + 
            "VALUES ( :version, :datatype, :min, :max, :possibleValues)";

    @Query(nativeQuery = true,value = insertBranch)
    void insertBranchData();
}
2020-05-17 20:20:27.854  WARN 25832 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42P01
2020-05-17 20:20:27.854 ERROR 25832 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: relation "myschema.tb03_mdd_data" does not exist
  Position: 13
2020-05-17 20:20:27.865 ERROR 25832 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement] with root cause

org.postgresql.util.PSQLException: ERROR: relation "tb03_mdd_data" does not exist
  Position: 13
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2533) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2268) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:313) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:448) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:369) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:159) ~[postgresql-42.2.12.jar:42.2.12]
    at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:125) ~[postgresql-42.2.12.jar:42.2.12]
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-3.4.3.jar:na]

我哪里出问题了?请救命!

提前感谢!

共有1个答案

西门淮晨
2023-03-14

我以前也有同样的问题。最好的方法是使用要创建的表名创建一个类。这是因为,您的表名和类名不同。只需删除@table注释并使用类名作为表名即可。spring-boot本身没有检测到这个注释。因此,没有使用它的意义。我认为,必须在数据库上创建名为version_data的表。

 类似资料:
  • 问题内容: 我正在尝试在PostgreSQL 8.4.2 DB上运行hibernate模式。每当我尝试运行一个简单的Java代码,例如: 我收到以下错误: 由于我将选项hibernate.show_sql选项设置为true,因此可以看到hibernate尝试运行以下SQL命令: 实际上,它至少应运行以下命令: 有谁知道我需要进行哪些更改才能使Hibernate为PostgreSQL生成正确的SQL

  • 问题内容: 我正在尝试将netbeans连接到我的postgresql数据库。该连接似乎已经起作用,因为仅在连接时我没有收到任何错误或异常,诸如getCatalog()之类的方法也返回正确的答案。 但是,当我尝试运行简单的SQL语句时,出现错误“错误:关系“ TABLE_NAME”不存在”,其中TABLE_NAME是数据库中确实存在的我的任何表。这是我的代码: 我以为netbeans可能找不到表,

  • 我在heroku上创建了java(Spring)应用程序,并将postgreql连接到它。当我在应用程序上发出请求时,日志显示 WARN 4-[io-14883-exec-3]o . h . engine . JDBC . SPI . sqlexception helper:SQL错误:0,SQLState:42p 01 app[web.1]:2016-12-11 12:13:09.942错误4-

  • 在pgadmin4将id保存在postgresql中后,我无法从“test”表中检索到id: 这里是表“test”的pgadmi4生成的create脚本: org.postgresql.util.psqlexception:错误:关系“test_id”不存在位置 ;:16在org.postgresql.core.v3.queryexecutorimpl.receiveerrorresponse(q

  • 由于一些奇怪的原因,hibernate生成的查询不适用于postgres,它告诉它无法找到关系/表,即使在架构中有有效的表?这个答案没有帮助。 例外情况: HQL公司 生成SQL 此查询工作正常: 基于胶片实体注释的映射: 解决方案/黑客: 评论后,问题消失了。

  • 我有一个使用spring boot和postgres的应用程序。我在尝试创建用户时遇到此错误。 当我在我的数据库上运行此查询时,我得到相同的错误: 但如果我将其更改为: 它起作用了。 如何在我的spring boot应用程序上配置它? pom中的依赖项。xml: application.properties: 我的实体: 我从表单中调用此操作: 这是我的控制器: 记录错误的验证器: UserSer