当前位置: 首页 > 面试题库 >

使用hibernate注释映射枚举类型

越鸿才
2023-03-14
问题内容

我的Java模型上有一个枚举类型,我想映射到数据库中的表。我正在使用“hibernate注释”,但我不知道该怎么做。由于我搜索的答案比较旧,我想知道哪种方法最好?

提前致谢


问题答案:

除了@Enumerated注释,您还需要其他东西吗?例如,以下枚举:

public enum MyEnum { 
    VALUE1, VALUE2; 
}

可以这样使用和注释:

private MyEnum myEnum;
@Column(name="myenum") 
@Enumerated(EnumType.ORDINAL) 
public MyEnum getMyEnum() { 
    return myEnum 
}

您可以使用批注的EnumTypeenum属性指定枚举应如何在数据库中持久化@EnumeratedEnumType.ORDINAL指定该枚举将作为整数值保留。在这里,myEnum设置为VALUE1将永久保存为0,保留VALUE2为1,依此类推。

替代方法是使用EnumType.STRING该字段设置为枚举值的名称来指定该枚举将被持久化。因此,应用于前面的示例,将字段设置为myEnumMyEnum.VALUE1将保留为VALUE1,等等。



 类似资料:
  • 问题内容: 我的Java模型上有一个枚举类型,我想映射到数据库中的表。我正在使用休眠注释,但我不知道该怎么做。由于我搜索的答案比较旧,我想知道哪种方法最好? 提前致谢 问题答案: 除了注释,您还需要其他东西吗?例如,以下枚举: 可以这样使用和注释: 您可以使用批注的enum属性指定枚举应如何在数据库中持久化。指定该枚举将作为整数值保留。在这里,设置为将永久保存为0,保留为1,依此类推。 替代方法是

  • 问题内容: 我需要预先将未实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate本身是否支持此功能?)。 问题答案: 可以创建一个自定义(例如thi

  • 问题内容: Hibernate提供的注释支持使用或的两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即hibernate尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了

  • 问题内容: 假设我有这个枚举: 通过以下映射: 枚举被发送到数据库,,。我希望这些值改为存储为,或存储在varchar列中。 如何将枚举映射到varchar列? 问题答案: 将其添加为EnumType的参数: 这是因为等效于java.sql.Types.VARCHAR

  • 我想让hibernate生成一些带有外键的表等等。我将给出我希望hibernate生成的查询的一个示例: 所以这个查询应该由hibernate通过注释生成。与此对应的类是: 有关中的应映射到的内容的示例(中的每个助记符在中只有一个值): 正如您所看到的,我在文档的帮助下做了一些尝试,但是我不能让Hibernate生成外键。如果有人能告诉我这个类需要的注释和值,那就太好了,这样我就可以自己为其他类做

  • Spring 3.x、JPA 2.0、Hibernate 4.x、Postgresql 9.x. 使用希望映射到Postgresql枚举的枚举属性处理Hibernate映射类。 使用枚举列上的where子句进行查询会引发异常。 SQL: Hibernate xml查询: > 按而不是按枚举查询工作正常。 没有数据库交互的Java工作良好: 不是,与和相同,异常更改为: 在查看https://sta