staram się korzystać z tego mapowania:JPA: Dziedziczenie - wartość Discriminator nie uwzględniane w wygenerowanym SQL
@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;
}
Kiedy próbuję uzyskać dostęp do mojej listy entranceRates
z ratesGrid
obiektu, otrzymuję ten błąd:
Object with id: 151 was not of the specified subclass: com.ecc.bo.rate.EntranceRate (loaded object was of wrong class class com.ecc.bo.rate.AnnualRate)
Patrząc na wygenerowany sql, nie znalazłem śladu "discriminator =" w klauzuli where. Co robię źle?
Używam bazy danych PostGreSQL i Hibernate jako dostawcy JPA.
Jeśli spróbuję pobrać wszystkie wartości wejściowe z bazy danych za pomocą zapytania jpql, wygenerowany sql zawiera klauzulę "where discriminator =". Problem pochodzi z mapowania w obiekcie RatesGrid, ale nie mogę go znaleźć. Dzięki, Julien – Julien