Я испытываю странное поведение в отношениях один на один.У меня есть отношения один к одному между двумя объектами: GeographicLocation и IdentityDocument.В этих отношениях GeographicLocation является родительским объектом.Отношение принадлежит сущности IdnetityDocument.Вот реализация JPA:
@Entity
@Table(name="GEOGRAPHICAL_LOCATION")
public class GeographicalLocation implements Serializable
{
private Long id;
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "GEOGRAPHICAL_LOCATION_ID")
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
...
}
@Entity
@Table(name="IDENTITY_DOCUMENT")
public class IdentityDocument implements Serializable
{
private Long id;
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "IDENTITY_DOCUMENT_ID")
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
@OneToOne
@MapsId
@JoinColumn(name = "IDENTITY_DOCUMENT_ID")
public GeographicalLocation getPlaceOfIssue()
{
return placeOfIssue;
}
public void setPlaceOfIssue(GeographicalLocation placeOfIssue)
{
this.placeOfIssue = placeOfIssue;
}
Это генерирует следующую модель базы данных:
Теперь, пытаясь сохранить эти объекты, как это:
GeographicalLocation geographicalLocation = ...;
IdentityDocument identityDocument = ...;
geographicalLocationFacade.save(geographicalLocation);
identityDocument.setPlaceOfIssue(geographicalLocation);
identityDocumentFacade.save(identityDocument);
создает две записи в таблице GEOGRAPHICAL_LOCATION и ни одной в таблице IDENTITY_DOCUMENT.
Похоже, что при сохранении объекта-потомка создается запись в главной таблице, а при сохранении главного объекта правильно создается запись в главной таблице, а в потомке - нет.Таблица.Я пытался играть по другому сценарию и гуглить, но до сих пор не понимаю, что здесь может произойти.Заранее большое спасибо тому, кто может затенить свет.С уважением, Николас