Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate中所有枚举类型的一个表_Java_Hibernate_Enums - Fatal编程技术网

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实体并将其持久化有很多这样的例子,这只是你学习它的一个起点。。。