Currently I have such relations in my DB
And I have appropriate classes:
Basic superclass:
@Entity
@Table(name = "Person")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Person {
@Id
@Column(name = "Id")
@GeneratedValue(strategy = GenerationType.AUTO)
protected Integer id;
@Column(name = "Name")
protected String name;
@Column(name = "Birthday")
protected Date birthDate;
@Column(name = "Avatar")
protected String avatarUrl;
@Column(name = "Sex")
protected Integer gender;
//... Getters and Setters
}
Client:
@Entity
@Table(name = "Client")
@PrimaryKeyJoinColumn(name = "Id")
public class Client extends Person {
@Id
@Column(name = "PersonId")
private Integer personId;
@Column(name = "Weight")
private Float weight;
@Column(name = "WeightUnit")
private Integer weightUnit;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="PersonId")
private Trainer trainer;
//... Getters and Setters
}
Trainer:
@Entity
@Table(name = "Trainer")
@PrimaryKeyJoinColumn(name = "Id")
public class Trainer extends Person {
@Id
@Column(name = "PersonId")
private Integer personId;
@Column(name = "Description")
private String description;
@Column(name = "CurrencyCode")
private Integer currencyCode;
@Column(name = "Price")
private Float price;
@Column(name = "Rating")
private Float rating;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "trainer")
private List<Client> clients;
//Getters and Setters
}
So basically, what I need, is to grab data from both tables in a single object, based on id matching. Unlikely it doesn't work for me.
All the time I receive this error:
ClassCastException: org.hibernate.mapping.JoinedSubclass cannot be cast to org.hibernate.mapping.RootClass
Any idea how can I fix it?