Java Hibernate中所有枚举类型的一个表
我有一个班级,比如说员工,如下所示Java Hibernate中所有枚举类型的一个表,java,hibernate,enums,Java,Hibernate,Enums,我有一个班级,比如说员工,如下所示 public class Employee{ ... Other attributes ... @Column @Enumerated(EnumType.Ordinal) private Gender gender; @Column @Enumerated(EnumType.Ordinal) private EmployeeType employeeType; ... Getters & Setters
public class Employee{
... Other attributes ...
@Column @Enumerated(EnumType.Ordinal)
private Gender gender;
@Column @Enumerated(EnumType.Ordinal)
private EmployeeType employeeType;
... Getters & Setters ...
}
我的员工表是这样的
Employee{
... other columns ....
gender int,
employeetype int,
...
}
我有一个通用的查找表
Lookups{
id long,
lookName String,
lookId int,
lookValue String
}
我希望通过hibernate将性别和EmployeeTypes持久化到查找表中,如下所示,我如何做到这一点
+--+-------------+---------+------------+
|ID|LOOKUPNAME |LOOKUPID | LOOKUPVALUE|
+--+-------------+---------+------------+
+--+-------------+---------+------------+
|1 | GENDER | 1 | MALE |
+--+-------------+---------+------------+
|2 | GENDER | 2 | FEMALE |
+--+-------------+---------+------------+
|3 | EMPLOYEETYPE| 1 | TEAM MEMBER|
+--+-------------+---------+------------+
|4 | EMPLOYEETYPE| 2 | TEAM LEADER|
+--+-------------+---------+------------+
|5 | EMPLOYEETYPE| 3 | MANAGER |
+--+-------------+---------+------------+
创建查找类。然后,对于Employee类的性别和EmployeeType字段,将其替换为查找字段。然后删除枚举注释。据我所知,您希望以自动方式将所有常量/枚举存储在一个表中 要做到这一点,你可以 一些XML/属性文件,将在服务器启动时加载以读取此数据。 类,它将在服务器启动时读取属性/XML文件,并检查查找数据是否存在。 如果没有,那么它将在数据库中持久化数据。 如果有数据,在DB上设置一些标志。如果此标志为true,则startup类将不会在下次服务器启动时再次调用检查。
这样,startup类可以在启动时检查数据,如果数据不在那里,则插入数据 也许你可以把它们放在一起,如下所示,并坚持下去
import java.util.*;
enum Gender {
male, female
}
enum EmployeeType {
member, leader, manager
}
class Lookups {
public String toString() {
return id + " " + lookName + " " + lookId + " " + lookValue;
}
private Lookups(Enum e) {
id = ++n;
lookName = e.getClass().getName();
lookId = e.ordinal() + 1;
lookValue = e.name();
}
private static void create(Enum e) {
for (Object o : e.getDeclaringClass().getEnumConstants())
lookups.add(new Lookups((Enum) o));
}
final long id;
final String lookName;
final int lookId;
final String lookValue;
static long n;
static Set<Lookups> lookups = new LinkedHashSet<Lookups>();
static {
create(Gender.values()[0]);
create(EmployeeType.values()[0]);
}
}
public class Main {
public static void main(String[] args) {
for (Lookups lookups : Lookups.lookups)
System.out.println(lookups);
}
}
那么数据将如何发布?如何使用hibernate进行发布。-要读取属性,可以使用ResourceBundle。-要读取XML文件,可以使用Springbean/XML来对象Castor/XStream/JAXB等startup类需要通过检查行数等来检查查找表中是否不存在数据。。。。然后它需要将数据从prop/XML读取到Hibernate实体并将其持久化有很多这样的例子,这只是你学习它的一个起点。。。