Java JPA:继承-生成的SQL中未考虑鉴别器值

Java JPA:继承-生成的SQL中未考虑鉴别器值,java,sql,hibernate,inheritance,jpa,Java,Sql,Hibernate,Inheritance,Jpa,我尝试使用此映射: @Entity @Table(name="ecc.\"RATE\"") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="DISCRIMINATOR", discriminatorType= DiscriminatorType.STRING) public abstract class Rate extends GenericBusinessObject { ... }

我尝试使用此映射:

@Entity
@Table(name="ecc.\"RATE\"")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="DISCRIMINATOR", discriminatorType= DiscriminatorType.STRING)
public abstract class Rate extends GenericBusinessObject {
...
}

@Entity
@DiscriminatorValue("E")
public class EntranceRate extends Rate { 
 @ManyToOne
 @JoinColumn(name = "\"RATES_GRID_ID\"")
 protected RatesGrid ratesGrid;
...
}


@Entity
@Table(name="ecc.\"RATES_GRID\"")
public class RatesGrid extends GenericBusinessObject {
 /** */
 @OneToMany(mappedBy = "ratesGrid",  targetEntity = EntranceRate.class, fetch=FetchType.LAZY)
 private List<EntranceRate> entranceRates;
}
查看生成的sql,我在where子句中没有发现“discriminator=”的痕迹。 我做错了什么


我使用PostGreSQL数据库和Hibernate作为JPA提供程序。

我不知道这是一个bug还是一个功能(对我来说,这是一个bug),但解决方案(解决方法?)是在顶级类上使用Hibernate注释:

@Entity
@Table(name="ecc.\"RATE\"")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="DISCRIMINATOR", discriminatorType= DiscriminatorType.STRING)
@org.hibernate.annotations.ForceDiscriminator
public abstract class Rate extends GenericBusinessObject {
    ...
}

你可能想投票支持他

如果我尝试使用jpql查询从数据库检索所有入口率,则生成的sql包含“where discriminator=”子句。所以问题来自RatesGrid对象中的映射,但我找不到位置。谢谢,Hibernate v???的JulienAs,
@ForceDiscriminator
已被弃用,请改用
@DiscriminatorOptions(force=true)
@Entity
@Table(name="ecc.\"RATE\"")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="DISCRIMINATOR", discriminatorType= DiscriminatorType.STRING)
@org.hibernate.annotations.ForceDiscriminator
public abstract class Rate extends GenericBusinessObject {
    ...
}