我想知道是否可以使用 DiscriminatorValue 以下列方式区分两个子类型: B extends A
@DiscriminatorValue( null ) 一个
@DiscriminatorValue("Some-Value") B 扩展 A
关键是我想检查某个 DiscriminatorType.Char 列中是否有空值。我试着写“”(空字符串)作为值,也是空的。尼特工作。
DiscriminatorValue 通常由实现设置,只有在实现无法正确区分两个类时才需要设置它,例如具有重复的类名或非常长的类名。
例如,在 Hibernate/Postgres 中,默认的鉴别器是简单的类名。我唯一一次必须设置它是在深度嵌套的类中,这些类的运行时间超过了数据库中的名称限制。
所以,长话短说,除非你必须,否则不要指定鉴别器值。
注释不允许空指示符,规范也不直接支持它。
如果您使用的是 EclipseLink,您应该能够使用 DescriptorCustomizer 将 null classIndicator 映射添加到 A 的 ClassDescriptor 的 inhertiancePolicy。