У меня есть три объекта, которые имеют один и тот же первичный ключ.Между объектами Account и Provider существует двунаправленное отношение один-к-одному, где ранее названные объекты имеют общий первичный ключ , но в то же времясущность Provider делит первичный ключ с сущностью GlobalRating , где между ними существует однонаправленная связь.Должен сказать, что я использую hibernate с MySQL в качестве базы данных:
Счётная запись:
@Entity
@Table(name="account")
@Getter
@Setter
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "email")
public class Account implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy= GenerationType.AUTO, generator="native")
@GenericGenerator(name = "native", strategy = "native")
@Column(name="id")
private int id;
@OneToOne(mappedBy = "account", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private Provider provider;
}
Субъект-провайдер:
@Entity
@Table(name="provider")
@Getter
@Setter
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "providerId")
public class Provider implements Serializable, Comparable<Provider>{
private static final long serialVersionUID = 1L;
@Id
@Column(name="pk_account$provider")
@GeneratedValue(generator="native")
@GenericGenerator(name="native", strategy="foreign",parameters=@Parameter(name="property", value="account"))
private int providerId;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private Account account;
@OneToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL, optional = false)
@PrimaryKeyJoinColumn
private GlobalRating globalRating;
}
GlobalRating Entity:
@Entity
@Table(name="global_rating")
@Getter
@Setter
public class GlobalRating implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name="pk_provider$global_rating")
@GeneratedValue(generator="native")
@GenericGenerator(name="native", strategy="foreign",parameters=@Parameter(name="property", value="globalRating"))
private int globalRatingId;
}
Проблема, с которой я сталкиваюсь при создании учетной записи с Provider и GlobalRating .Я уверен, что двунаправленное сопоставление между Account и Provider работает, но проблема заключается в сопоставлении сущности Provider и сущности GlobalRating .Я пробовал это несколькими способами, но это не работает.Итак, как этот случай правильно отображается в hibernate?
Я ценю, что вы можете помочь мне с этим.