org.hibernate.MappingException:JDBC类型没有DialectMap:1111

slmsl1lt  于 2023-08-06  发布在  其他
关注(0)|答案(4)|浏览(259)
Initial SessionFactory creation failed.org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
    27 Dec, 2012 6:38:34 PM org.apache.catalina.core.StandardWrapperValve invoke
    SEVERE: Servlet.service() for servlet commission threw exception
    org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
        at org.hibernate.dialect.TypeNames.get(TypeNames.java:79)
        at org.hibernate.dialect.TypeNames.get(TypeNames.java:104)
        at org.hibernate.dialect.Dialect.getTypeName(Dialect.java:347)
        at org.hibernate.mapping.Column.getSqlType(Column.java:208)
        at org.hibernate.mapping.Table.sqlCreateString(Table.java:419)
        at org.hibernate.cfg.Configuration.generateSchemaCreationScript(Configuration.java:930)
        at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:105)
        at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:383)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1385)
        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
        at com.core.commission.HibernateUtil.<clinit>(HibernateUtil.java:15)
        at com.core.commission.service.BaseCommissionService.saveRules(BaseCommissionService.java:48)
        at com.core.commission.service.BaseCommissionService.processSave(BaseCommissionService.java:22)
        at com.core.web.CommissionServlet.processRequest(CommissionServlet.java:51)
        at com.core.web.CommissionServlet.doPost(CommissionServlet.java:34)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

字符串
我在启动Web服务器时出现上述错误。我使用enumMap与enity类。就像...

@Column(name = "commission_type")
        @Type(type = "com.core.commission.model.FNEnumUserType", parameters = @Parameter(name = "type", value = "com.core.commission.dto.CommissionType"))
        private CommissionType commissionType;


有什么问题,我在配置中遗漏了什么吗?谢谢!!

bjg7j2ky

bjg7j2ky1#

堆栈跟踪告诉您的是,Hibernate正在初始化自身,特别是正在执行Configuration.generateSchemaCreationScript,它遍历所有Map表并为它们生成DDL。作为此操作的一部分,它查询现有列并将其转换为内部Hibernate表示。它通过调用ResultSetMetaData::getColumnType,然后用结果类型代码调用TypeNames::get来实现这一点。问题是getColumnType返回的类型代码是1111,意思是“其他”),Hibernate不知道该怎么处理。
基本上,在你的一个表中的某个地方有一个Hibernate不能处理的列。如果你能弄清楚是哪一列,你就可以开始考虑该怎么做了。

whitzsjs

whitzsjs2#

尝试在数据库端进行跟踪,在应用程序的代码中放置一些断点或添加一些日志条目,以识别生成此错误的查询,即在错误发生之前正在执行的查询。
获得查询后,尝试通过将语句分解为小块来缩小根本原因,并查看方言不支持哪种列/变量。

pes8fvy9

pes8fvy93#

在你的查询中,我认为一些数据类型被检索为未知类型。请将类型转换为您在Java Bean中使用的适当数据类型。如果您使用Postgres作为数据库。在你的java代码中,你可以将其类型转换为eg:select column_name :: desired type as \"desired_name\"例如:select type_name :: text as \"typeName\"
如果“::”这会产生任何问题,请使用**\ \:\ \:**,即包含转义字符

relj7zay

relj7zay4#

我设法解决了这个错误。
1111是一个Null值,在我的例子中,该列是强制性的,在任何时候都会有一个来自枚举类型的值。因此,不需要设置1111,我将其更改为VARCHAR sql类型。
终于成功了

相关问题