Просто пробую Hibernate (с аннотациями), и у меня возникают проблемы с моими сопоставлениями. У меня есть два класса сущностей, AudioCD и Artist.
@Entity
public class AudioCD implements CatalogItem {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String title;
@ManyToOne(cascade = { CascadeType.ALL }, optional = false)
private Artist artist;
....
}
@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }) })
public class Artist {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(nullable = false)
private String name;
.....
}
Я получаю объекты AudioCD из внешнего источника. Когда я пытаюсь сохранить AudioCD, Исполнитель тоже сохраняется, как я и хочу. Если я пытаюсь сохранить другой компакт-диск, но Artist уже существует, я получаю ошибки из-за нарушения ограничений.
Я хочу, чтобы Hibernate распознал, что Artist уже существует и его не нужно вставлять снова. Можно ли это сделать с помощью аннотаций? Или мне нужно управлять постоянством AudioCD и Artist отдельно?