我有这堂课:
@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 {
...
}