有没有办法做这样的事情。我有一个名为person的实体。
@Entity
@Table(name = "PERSON")
public class Person {
   @Column(name = "NAME", length = 128, columnDefinition = "VARCHAR2(128)")
   String name;
   @Column(name = "NATIONALITY", length = 128, columnDefinition = "VARCHAR2(128)")
   String nationality;
}“国籍”列有数值--每个数字都是一个国家的代码。我想要将'nationality‘字段映射到我的自定义枚举,并创建一些转换代码<->国家的方法。
@Entity
@Table(name = "PERSON")
public class Person {
   @Column(name = "NAME", length = 128, columnDefinition = "VARCHAR2(128)")
   String name;
   @Column(name = "NATIONALITY", length = 128, columnDefinition = "VARCHAR2(128)")
   Nationality nationality;
}
enum Nationality {
   USA, Brazil, Germany; // etc.
}
public static Nationality codeToNationality(String code);对于这样的事情,有没有hibernate方法?我不能修改列定义-数据库是只读的。
我想要实现的第二件事是排除任何未解析国籍代码的实体。codeToNationality(...) == null的实体对于hibernate是不可见的。
我的模型(人员、国籍)只是一个例子。
谢谢你的帮助!
发布于 2012-07-23 17:39:21
这两个问题:
可以通过创建适当的UserType来解决。
可以从here中找到有关枚举和自定义用户类型一些示例。自定义类型的一般描述是Hibernate documentation的一部分。
另一种选择是为枚举提供特定的setter,这些setter将与映射到数据库列的字符串值相互转换。如果仅在此实体中需要此自定义类型,则这是可行的。
https://stackoverflow.com/questions/11609678
复制相似问题