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 {
...
}