Я уверен, что это дублированный вопрос, но я не могу заставить его работать. У меня есть отношение «один к нулю» или «один» с общим первичным ключом между объектом Home
и объектом Address
.Отсутствует столбец: идентификатор на взаимно однозначном сопоставлении с общим PK
Моя проблема заключается в том, что я получаю сообщение об ошибке
Missing колонок: идентификатор
Я отображающее свои объекты, как показано here, но разница, имя столбца для моего Address
лица не называется id
, но homeId_pf
.
Вот мои объекты:
@Entity
@Table(name = "homes")
@Getter
@Setter
public class Home implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false, updatable = false)
private Long id;
@OneToMany(fetch = EAGER, cascade = {ALL}, orphanRemoval = true)
@JoinColumn(name = "homeId_fk", referencedColumnName = "id", nullable = false)
private Set<Room> rooms = new HashSet<>();
@OneToOne(fetch = EAGER, cascade = {ALL})
@PrimaryKeyJoinColumn
private Address address;
}
@Entity
@Table(name = "addresses")
@Getter
@Setter
public class Address implements Serializable {
@Id
@Column(name = "homeId_pf")
private Long id;
private Integer city;
@MapsId
@OneToOne
@JoinColumn(name = "id")
private Home home;
}
Как сказал мой addresses
таблица имеет два столбца: homeId_pf
, который установлен в ПК и FK для homes.id
и city
.
Я также попытался установить @JoinColumn(name = "homeId_pf")
на Address
класс и @PrimaryKeyJoinColumn(referencedColumnName = "homeId_pf")
на объект Home
, но это не поможет.
Возможно, дублированный вопрос: Помогает ли это? http://stackoverflow.com/questions/11938253/jpa-joincolumn-vs-mappedby –