繁体   English   中英

错误:org.postgresql.util.PSQLException:错误:列 userinfo0_.dtype 不存在

[英]ERROR:org.postgresql.util.PSQLException:ERROR: column userinfo0_.dtype does not exist

我正在 Spring boot 中开发一个 Web 应用程序,并使用 PostgreSQL 作为我的数据库。

我有四节课。 一个是父母,另外三个是孩子。 这是一种分层继承。 我有父类中 3 个子类通用的字段,当我实现它时出现 dtype 错误,即它说我没有在父类中键入 dtype 列,然后我添加了名为的 dtype 列作为数据库中的 userInfo_type 并手动为其分配值“0”,并且在父类的实体类中我指定了这个

@DiscriminatorColumn(name="userInfo_type",discriminatorType = DiscriminatorType.INTEGER,columnDefinition = "0")
)

@DiscriminatorValue("1"),@DiscriminatorValue("2"),@DiscriminatorValue("3")

分别在三个子类中

注意:我没有在四个实体中的任何一个实体中添加 userInfo_type 列作为属性之一,也没有在创建数据库表和列的 db 脚本中添加,我在 db 中显式添加了列并将@DiscriminatorColumn添加到父级和@DiscriminatoryValue分别给孩子们,在我运行后,我收到了这个错误

Caused by: org.postgresql.util.PSQLException: ERROR: column userinfo0_.user_info_type does not exist
  Hint: Perhaps you meant to reference the column "userinfo0_.userInfo_type".
  Position: 901
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2510)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2245)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:311)
    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:447)
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:368)
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:159)
    at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:109)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:60)
    ... 105 more
2020-03-23 13:16:21.572 DEBUG 8796 --- [nio-8080-exec-1] m.m.a.RequestResponseBodyMethodProcessor : Using 'application/json', given [*/*] and supported [

创建的(手动)列已命名为: userInfo_type而在将鉴别器字段名称转换为列名称Hibernate 时,使用蛇形大小写命名,在任何大写字母之前加上下划线( _ )。

简单地说: userInfo_type被解析为USER_INFO_TYPE而不是USERINFO_TYPE

如果您可以在表上手动操作,您可以将创建的列重命名为USER_INFO_TYPE

否则,您必须通过重新定义应用程序配置中的相应属性来配置Spring命名策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM