hibernate - 如何使用字段将属性注释为枚举

发布于 2024-08-08 16:24:26 字数 393 浏览 2 评论 0 原文

如何映射其中包含字段的枚举?

public enum MyEnum{
HIGHSCHOOL ("H"), COLLEGE("C")
private int value;
public MyEnum getInstance(String value){...}
}

@Entity
public class MyEntity {
@Enumerated(...)
private MyEnum eduType;
}

如何注释以便值 H、C 将保留在数据库中?如果我保留 @Enumerated(EnumType.STRING),HIGHSCHOOL 而不是 H 将存储在数据库中。如果我使用EnumType.ORDINAL,则 1 而不是 H 将存储在数据库中。请提出解决方案。

How do I map an enum with a field in it?

public enum MyEnum{
HIGHSCHOOL ("H"), COLLEGE("C")
private int value;
public MyEnum getInstance(String value){...}
}

@Entity
public class MyEntity {
@Enumerated(...)
private MyEnum eduType;
}

How do I annotate so that values H, C will be persisted in the database? If I keep @Enumerated(EnumType.STRING), HIGHSCHOOL instead of H will be stored in the database. If I use EnumType.ORDINAL, 1 instead of H will be stored in the database. Kindly suggest a solution.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回忆凄美了谁 2024-08-15 16:24:26

Hibernate 中没有内置方法可以执行此操作。您可以将 UserType 写入如果你愿意的话,可以为你做到这一点。

这是一个好的开始,但您需要替换 nullSafeSet()< /code> 和 nullSafeGet() 实现来存储您的枚举代码(例如“H”/“C”/您有什么)并基于它返回正确的枚举实例。

如果您有多个枚举类型需要执行此操作,您可以实现 ParameterizedType 接口,将枚举类型作为参数传递,或使用反射来检索“代码”,只要访问器方法的命名一致即可。

There's no built-in way to do this in Hibernate. You can write a UserType to do that for you if you want.

This is a good start, but you'll need to replace nullSafeSet() and nullSafeGet() implementations to store your enum code (e.g. 'H' / 'C' / what have you) and return proper enum instance based on it.

If you have more than one enum type you need to do this for, you can implement ParameterizedType interface to pass enum type as parameter or use reflection to retrieve the "code" as long as accessor methods are named consistently.

偏爱自由 2024-08-15 16:24:26

感谢 ChssPly76 提供的解决方案。我实现了一个用户类型并且运行良好。事实上,hibernate 社区中有一个例子可以将值/令牌保存在枚举中。 点击此处:StringValuedEnum

Thank you ChssPly76 for the solution. I implemented a user type and it works well. In fact, there is an example in the hibernate community to persist the value/token in the enum. Click here: StringValuedEnum

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文