使用枚举作为鉴别器值的SINGLE_TABLE继承策略 [英] SINGLE_TABLE inheritance strategy using enums as discriminator value

查看:101
本文介绍了使用枚举作为鉴别器值的SINGLE_TABLE继承策略的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用SINGLE_TABLE继承策略时可以使用枚举作为鉴别器值吗?

Is it possible to use an enum as a discriminator value when using SINGLE_TABLE inheritance strategy?

推荐答案

如果您正在尝试实现是不要重复鉴别器的值,有一个简单的解决方法。

If what you are trying to achieve is to not to duplicate the discriminator values, there is a simple workaround.

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="FREQUENCY",
    discriminatorType=DiscriminatorType.STRING
)    
public abstract class Event  {
}

@Entity
@DiscriminatorValue(value=Frequency.Values.WEEKLY)
public class WeeklyEvent extends Event {
    …
}

public enum Frequency {
    DAILY(Values.DAILY),
    WEEKLY(Values.WEEKLY),
    MONTHLY(Values.MONTHLY);

    private String value;

    …

    public static class Values {
        public static final String DAILY = "D";
        public static final String WEEKLY = "W";
        public static final String MONTHLY = "M";
    }   
}

不是超级优雅,而是比维持多个地方的价值。

Not super elegant, but better than having to maintain the values in multiple places.

这篇关于使用枚举作为鉴别器值的SINGLE_TABLE继承策略的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆