Замапить легко
@Entity
public class Zone {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne(mappedBy = "zone")
private ZoneDescription description;
// Геттеры и сеттеры не указаны для краткости
}
@Entity
public class ZoneDescription {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
private Zone zone;
@ManyToOne(optional = false)
private ZoneLanguage language;
// Геттеры и сеттеры не указаны для краткости
}
@Entity
public class ZoneLanguage {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
/* Раскоментировать, если нужна двунаправленная связь
@OneToMany(mappedBy = "language")
private Set<ZoneDescription> descriptions = new HashSet<>();
*/
// Геттеры и сеттеры не указаны для краткости
}
И потом так же легко в прикладном коде
Zone zone = zoneRepository.getById(zoneId);
ZoneDescription description = zone.getDescription();