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

Hibernate EnumType实例化异常

宋烨烁
2023-03-14

我正在使用Hibernate4和基于xml的映射。这是我得到的例外

Caused by: org.hibernate.MappingException: Unable to instantiate custom type: org.hibernate.type.EnumType
    at org.hibernate.type.TypeFactory.custom(TypeFactory.java:193)
    at org.hibernate.type.TypeFactory.custom(TypeFactory.java:179)
    at org.hibernate.type.TypeFactory.byClass(TypeFactory.java:103)
    at org.hibernate.type.TypeResolver.heuristicType(TypeResolver.java:130)
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:307)
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:294)
    at org.hibernate.mapping.Property.isValid(Property.java:238)
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:469)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:270)
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1294)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1742)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1788)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$6.run(AbstractAutowireCapableBeanFactory.java:1504)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1502)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
    ... 35 more
Caused by: java.lang.NullPointerException
    at org.hibernate.type.EnumType.setParameterValues(EnumType.java:153)
    at org.hibernate.type.TypeFactory.injectParameters(TypeFactory.java:131)
    at org.hibernate.type.TypeFactory.custom(TypeFactory.java:189)
    ... 53 more
<property name="coachingStatus" column="status" update="true" insert="true" index="true">
      <type name="org.hibernate.type.EnumType">
        <param name="enumClass">com.tutorial.enums.CoachingStatus</param>
        <param name="type">12</param>
      </type>
    </property>
public enum CoachingStatus {
  ACTIVE, BLOCKED, PENDING, EXPIRED
}
public class Coaching implements Serializable {
  private Integer id;
  private String name;
  private Long locationId;
  private Integer organisationId;
  private Long ownerId;
  private Date createdOn;
  private Date modifiedOn;
  private CoachingStatus coachingStatus;
  private Long createdBy;
  private Long modifiedBy;
  private String email;
  private String logo;
  private String about;
  private String phone;
... //getters and setters
}

共有1个答案

高夜洛
2023-03-14

我也遇到了同样的问题,看起来解决方案是添加另一个参数。这样,它就不会尝试将其保持为序数,而是保持为字符串,所以我想string与VARCHAR类型一起工作会更好。

 <property name="coachingStatus" column="status" update="true" insert="true" index="true">
    <type name="org.hibernate.type.EnumType">
       <param name="enumClass">com.tutorial.enums.CoachingStatus</param>
       <param name="type">12</param>
       <param name="useNamed">true</param>
  </type>
</property>

通过将usenamed设置为true,hibernate将使用枚举的名称存储枚举,这样在更改枚举类型的顺序时,数据就不会中断。

 类似资料:
  • 嗨,我有下面的map-reduce代码,我试图通过它解析我的XML文件并在输出中创建一个CSV。 我还有一个名为Connect_Home的类,在这个类中,我使用JAXB解析数据,提取数据。但当我运行代码时,会出现以下错误:

  • 我试图将Quartz与spring boot一起使用,但我遇到了这个异常: 2021-04-01 19:07:25.753错误13088---[SchedulerThread]org.quartz.core.errorlogger:实例化要执行的作业时发生错误。job='ecadb474-77b7-45bd-926a-caee31728465' 有人能指出我哪里出了问题吗?

  • “异常信息” 在WebDriver.dll中发生类型为“System.InvalidOperationException”的未处理异常 附加信息:没有这样的驱动程序(NoSuchDriver) OpenQa.Selenium.edge.EdgedRiver..ctor(字符串edgeDriverDirectory,EdgeOptions选项) ConsoleApplication.Program.

  • 最近我更新了我的Hibernate从3.1到4.3,我正在尝试使用注释而不是xml。使用Xml,一切都运行良好,注释会抛出一堆异常。最后一个我被卡住的是下面的堆栈痕迹,请给它一些启示。我非常需要帮助,因为堆栈跟踪没有给我任何特定的工作区域。我使用的是Hibernate 4.3 java辅助3.18 我试着使用javaassistjar,这是每个人都建议的,但是din;我帮不了我。然而,我有我的疑问

  • 我跟随这篇博文,尝试实现一个自定义验证器来验证复合主键约束,但失败了: 以下是验证器注释界面的代码: 下面是validator类: 以下是实体类: 及其主键类: 我尝试运行以下测试: 我错过了什么?谢谢您。

  • 假设你有一个绘制了很多模型的场景,而大部分的模型包含的是同一组顶点数据,只不过进行的是不同的世界空间变换。想象一个充满草的场景:每根草都是一个包含几个三角形的小模型。你可能会需要绘制很多根草,最终在每帧中你可能会需要渲染上千或者上万根草。因为每一根草仅仅是由几个三角形构成,渲染几乎是瞬间完成的,但上千个渲染函数调用却会极大地影响性能。 如果我们需要渲染大量物体时,代码看起来会像这样: for(un