【问题标题】:column does not exist in my table @Entity @Column我的表中不存在列@Entity @Column
【发布时间】:2023-03-19 23:20:01
【问题描述】:

我在数据库中有一个名为 invoice 的实体和一个名为“convenioPago”的列,但找不到它

试着把@Column (name = "\"convenioPago\"", nullable = false) 但仍然有同样的错误

@Entity
@Table(name = "invoice", schema = "public")
public class Invoice {
 //more columns
 @Column (name = "\"convenioPago\"", nullable = false)
 private Long convenioPago;
}

我也使用@Configuration 来创建我的数据源

@EnableJpaRepositories(basePackages = {"package.repository"})
@Configuration
public class Config {
 @Bean
 public DataSource dataSource(){
   DriverManagerDataSource dataSource = new DriverManagerDataSource();
   //use org.postgresql.Driver
 }

注意:我使用 spring-boot-starter-parent 2.1.7.RELEASE

我的错误是: ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper: ERROR: column invoice0.convenio_pago does not exist

因为如果应该指向convenioPago,它指向convenio_pago

【问题讨论】:

  • 您使用的是哪个 RDBMS?
  • 嗨@YCF_L 我使用关系
  • 我的意思是 MySQL、PostgreSQL、Oracle,你也可以告诉我们你是如何创建表的
  • 哦!对不起,我使用 POSTGRES,该表是多年前使用 MyEclipseCI 创建的,但我有一个带有该表的微服务项目,并且我映射了它。实体是textsaver.flap.tv/lists/2v97
  • 查看stackoverflow.com/questions/376093/hibernate-column-name-issues/…。此外,Hibernate 正在做自己喜欢的事情。不过,您可以用额外的引号将您的列名括起来,以实现您所需要的

标签: java spring spring-boot jpa datasource


【解决方案1】:

感谢@MartinvanWingerden,您的评论帮助我找到了解决方案! 我的解决方案: 在我的@Configuration 中,我需要这个 jpaproperties。

Properties jpaProperties = new Properties();
jpaProperties.put("hibernate.ejb.naming_strategy","org.hibernate.cfg.ImplicitNamingStrategy");
jpaProperties.put("hibernate.ejb.physical_naming_strategy","org.hibernate.cfg.PhysicalNamingStrategyImpl");

和方言:

jpaProperties.put("hibernate.dialect","org.hibernate.dialect.PostgreSQLDialect");

【讨论】:

    【解决方案2】:

    如果您使用的是 Hibernate 原生 API,那么您可以使用反引号对它们进行转义:

    @Column(name = "`convenioPago`")
    private Long convenioPago;
    

    【讨论】:

    • 嗨@Jonathan,我也使用了“`”,但结果相同。
    • 所以 yogesh 评论了一个链接。看起来你应该只使用“convenioPago”,这应该可以工作。
    • @MaicolyMorocho 请尝试一下,如果可行,请告诉我。
    • 嗨@Jonathan,我有同样的错误,ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper : ERROR: no existe la columna factura0_.convenio_pago Hint: Probablemente quiera hacer referencia a la columna «factura0_.convenioPago».
    • factura0=invoice0 :)
    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多