Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 如何将JPA中的一系列鉴别器值与“策略”一起使用;单表;?_Java_Jpa - Fatal编程技术网

Java 如何将JPA中的一系列鉴别器值与“策略”一起使用;单表;?

Java 如何将JPA中的一系列鉴别器值与“策略”一起使用;单表;?,java,jpa,Java,Jpa,我有一个叫做“班纳”的父亲阶级,还有很多从他那里继承下来的阶级。 所有在鉴别器值中以相同数字开头的类都具有相同的属性,然后我想使用相同的类来对它们进行初始化 我的实际代码是这样的: @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(discriminatorType = DiscriminatorType.INTEGER) @DiscriminatorValue("20001")

我有一个叫做“班纳”的父亲阶级,还有很多从他那里继承下来的阶级。 所有在鉴别器值中以相同数字开头的类都具有相同的属性,然后我想使用相同的类来对它们进行初始化

我的实际代码是这样的:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("20001")
public class IndexGallery extends Banner{
但我想要这样的东西,因为它更一般:

....
@DiscriminatorRange("20000-29999")
public class Gallery extends Banner{
....
@DiscriminatorRange("30000-39999")
public class FooBanner extends Banner{

另一方面,可以创建一个自定义规则来区分?像常规表达式一样?

您可以使用
@DiscriminatorFormula
。以个人为例:

@DiscriminatorFormula("case when age is null then 0 else age end")
public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    @Column(name="person_id")
    private int personId;

    @Column(name="name")
    private String name;

    @Column(name="age")
    private Integer age;
}

Hibernate有一些关于它的文档

“分组”的目的是什么?鉴别器定义它所涉及的类,而不是它所拥有的子类。如果您希望能够查询所有子类,则在查询机制中不使用此标志。我希望使用鉴别器来确定类。在类中,我希望使用相同的鉴别器来确定ID,用户说他在哪里使用Hibernate?@NeilStockton我做了一个假设。。。我认为hibernate为此提供了一个干净的(可能是唯一的)解决方案