如何在JavaSpring中将多个枚举Map到同一列中?

pcrecxhr  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(361)

我在模型对象中有一个字段,它采用如下枚举:

@Enumerated(...)
private UniveritySubject subject; //Of course not working like this...

为了更好的结构和更好的概述,我想将我的主题分为两个枚举:一个枚举表示冬季主题,另一个枚举表示夏季主题,如下所示:

public class Subject {

    public enum Summer {
        ...
        MATH;
    }

    public enum Winter {
        ...
        PHYSICS;
    }
}

如何实现这些枚举到模型列的Map subject ? 遗憾的是,无法继承枚举,因此我无法拥有“超类枚举”。我考虑过使用一个带有布尔值的枚举 isInWinter ,但请注意,我有很多主题,我认为概述一下并不好。还有其他解决办法吗?

jhiyze9q

jhiyze9q1#

为了规范化这一点,我会改变设计。 UniversitySubject 应为自己的实体,如(例如):

@Entity
public class UniversitySubject {
    @Enumerated(EnumType.STRING)
    private Season season;
    @Enumerated(EnumType.STRING)
    private Subject subject;
}

哪里 Season 是:

enum Season { SPRING, SUMMER, AUTUMN, WINTER }

Subject ```
enum Subject { MATH, PHYSICS, BIOLOGY }

然后在课堂上使用它会像

@ManyToOne
private UniversitySubject subject;

还有,也许要澄清一下 `UniversitySubject` 可以命名 `TermSubject` 或者类似的东西?
当然,可以使用jpa注解(例如)将所有这些内容浓缩成一个字符串并进行解析,但设计中的一些小更改应该会使这些“黑客”变得不必要。

相关问题