@ DiscriminatorColumn / @ DiscriminatorValue不起作用

时间:2016-05-03 15:51:31

标签: hibernate jpa spring-data discriminator

我有这堂课:

@Entity
@Table(name = "FOO")
@DiscriminatorColumn(name="IS_FOO_OR_BAR", discriminatorType = DiscriminatorType.CHAR)
@DiscriminatorValue("FOO")
public final class FOO {
  ...
}

但是当我将findAll()与Spring Data JPA一起使用时,结果在判别式中包含foo和bar值。

我还尝试使用@MappedSuperclass创建一个抽象的父类,但结果相同。

我做错了什么?

我正在使用Spring Data JPA,JPA 2.1,Hibernate 5.1.0,我在H2Database和Oracle中尝试了我的请求。

编辑(由jpa提供程序调用的sql):

select FOO.* FROM FOO

就像我错过了一个条件。

编辑2:

我添加了@DiscriminatorOptions(force = true),现在它可以工作了。 但是,当我尝试使用抽象类时,它不起作用。 哪里条件不存在......

pojo:

@MappedSuperclass
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="IF_FOO_OR_BAR", discriminatorType = DiscriminatorType.CHAR,columnDefinition = "char(1) default 'N'")
@DiscriminatorOptions(force = true)
public abstract class AbstractFoo {
    ....
}


@Entity
@Table(name = "FOO")
@DiscriminatorValue("FOO")
public final class Foo extends AbstractFoo {
  ...
}


@Entity
@Table(name = "FOO")
@DiscriminatorValue("BAR")
public final class Bar extends AbstractFoo {
  ...
}

0 个答案:

没有答案