Я стремлюсь выполнить задание здесь, которое может быть не таким сложным, но я полностью потерян и отчаялся, так что надеюсь, что вы, ребята, можете иметь ключ к разгадке этого.
Вот так:
Допустим, у меня есть такое отображение:
BREAK
@Entity
@Table(name = "TB_ECRAN")
public class Break extends AbstractCommonEntity {
@Id
@GeneratedValue(generator = "id_gen_break", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "id_gen_break", sequenceName = "SQ_ECRAN", allocationSize = 1)
private Long id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumns({
@JoinColumn(name = "ID", referencedColumnName = "ECRAN_ID", insertable = false, updatable = false),
@JoinColumn(name = "CIBLE_TARIF_ID", referencedColumnName = "CIBLE_ID", insertable = false, updatable = false)
})
private Audience targettedAudience;
// other properties, get/set and so on
}
AUDIENCE
@Entity
@Table(name = "TB_AUDIENCES")
public class Audience implements Serializable {
@Id
@GeneratedValue(generator = "id_gen_audience", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "id_gen_audience", sequenceName = "SQ_AUDIENCES", allocationSize = 1)
private Long id;
@Column(name = "CIBLE_ID")
private Long targetId;
@Column(name = "ECRAN_ID")
private Long breakId;
// other properties, get/set and so on
}
Это самое близкое к мне стремление достичь того, чего я хочу, а именно:
- Один Разрыв сущности имеет одну и только одну Аудиторию
- Одна Аудитория имеет один и только один Разрыв
- Отношение определяется следующим составным ключом: Аудитория разрыва - это Аудитория, которая Audience.breakId == Break.id AND Audience.targetId == Break.pricingTargetId
- Когда я создаю новый Брейк, я также создаю для него новую Аудиторию, сохраняю ее в своей сущности и сохраняю Брейк, который также должен сохранить Аудиенцию каскадом
Этопоследний пункт, который не работает, с приведенным выше кодом я могу получить разрыв с егоАудитория, но когда я хочу создать / обновить свой перерыв, он не может создать аудиторию по каскаду, я должен вручную определить Audience.breakId и Audience.targetId, чтобы он работал.
Я искалИнтернет часами просил помощи вокруг, но, как ни странно (это не может быть таким экзотическим случаем !?), ничего не работает ... у кого-нибудь есть идеи, как решить эту проблему?Большое спасибо заранее :) 1033 *