У меня есть класс с 2 полями, помеченными @ Id
@Entity
@Table(name="baspas")
class BasPas
@Id
@ManyToOne
@JoinColumn(name="bas_id", referenceColumnName="id")
private Bas basboard;
@Id
@ManyToOne
@JoinColumn(name = "pas_id", referenceColumnName = "id")
private pas pasboard;
//
Я реорганизовал их в класс Embedded и извлек два вышеупомянутых поля @Id в классе BasPasPK.Это позволит мне создать интерфейс, который расширит интерфейс JPARepository.
@Embeddable
class BasPasPK {
@ManyToOne
@JoinColumn(name="bas_id", referenceColumnName="id")
private Bas basboard;
@ManyToOne
@JoinColumn(name = "pas_id", referenceColumnName = "id")
private pas pasboard;
//
}
Поскольку оба эти поля аннотированы @ManyToOne, есть еще один конец отношения, где в этих полях указано «mappedBy»,например,
@Entity
class Another{
.
.
@OneToMany(mappedBy = "basboard" cascade = CascadeType.ALL)
private set<BasPas> basPas;
.
.
.
}
Но после рефакторинга как получить доступ к другому концу класса.
Что я имею в виду, когда я делаю mvn spring-boot: run Я получаю следующееисключение
org.hibernate.AnnotationException: mappedBy ссылается на неизвестное целевое свойство объекта
, после чего я изменил имя класса в
@Entity
class Another{
.
.
@OneToMany(mappedBy = "basboard" cascade = CascadeType.ALL)
private Set<BasPas> basPas;
.
.
.
}
на это
class Another{
.
.
@OneToMany(mappedBy = "bas" cascade = CascadeType.ALL)
private set<BasPasPk> basPas; //changed the classname in angle brackets to BasPasPk
.
.
.
}
Но после этого я начал получать следующее исключение.
org.hibernate.AnnotationException: использование @OneToMany или @ManyToMany для таргетинга на неподключенный класс.
Как исправитьЯ имею в виду, как получить доступ к этим свойствам в другом классе после извлечения этих двух свойств во встроенном классе.