【问题标题】:Wrong hibernate column type: Found: undefined错误的休眠列类型:发现:未定义
【发布时间】:2020-06-17 17:32:54
【问题描述】:

我在服务器(websphere)启动时遇到以下异常。 VIEW_LTABLE_FULL_CLEARANCE_DAY 是关于 Oracle 的观点

Caused by: org.hibernate.HibernateException: Wrong column type in CALMS2CMS_SCHEMA_25.VIEW_LTABLE_FULL_CLEARANCE_DAY for column table_code. Found: undefined, expected: varchar2(255 char)
        at org.hibernate.mapping.Table.validateColumns(Table.java:373)
        at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1305)
        at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155)
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:512)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1797)
        at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
        at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
        at org.springframework.orm.jpa.vendor.SpringHibernateEjbPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateEjbPersistenceProvider.java:51)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:360)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:384)
        ... 41 more

TABLE_CODE 列定义为:

TABLE_CODE  NOT NULL VARCHAR2(5 CHAR)

该列的 Hibernate 实体映射为:

@Column(name = "table_code")
private String tableCode;

查看定义:

CREATE OR REPLACE FORCE VIEW VIEW_LTABLE_FULL_CLEARANCE_DAY (
  TABLE_TYPE,
  TABLE_CODE,
  TABLE_TERRITORY_CODE,
  DESCRIPTION,
  FULL_CLEARANCE_DAYS,
  RECEIPT_REQUIRED
) AS
SELECT
   TYPE AS TABLE_TYPE,
   CODE AS TABLE_CODE,
   TERRITORY_CODE AS TABLE_TERRITORY_CODE,
   DESCRIPTION,
   FULL_CLEARANCE_DAYS,
   RECEIPT_REQUIRED
FROM PAYMENT

我不明白为什么错误显示Found: undefined

映射似乎正确。

【问题讨论】:

  • 为什么使用强制视图?您的视图是否正常创建?尝试不使用它

标签: java spring oracle hibernate jpa


【解决方案1】:

尝试通过以下方式更正您的 tableCode 定义:

@Column(name = "table_code", columnDefinition = "VARCHAR2(5 CHAR)")
private String tableCode;

this 文章中所建议的那样。

【讨论】:

  • 我可以,但我不希望它是特定于 Oracle 的。无论如何,它没有解释为什么错误说“未定义”
  • @Navs 请在问题中添加有关您使用的休眠版本和休眠方言的信息。
  • 休眠版本 4.2.13.Final
  • @Navs 和休眠方言
  • @Navs 和 oracle 版本
【解决方案2】:

好的,当我重新创建视图时,错误消失了。 但我仍然不知道为什么我一直收到最初的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 2017-05-10
    相关资源
    最近更新 更多