У меня есть две сущности
@Entity
@Table(name = "question", uniqueConstraints =
@UniqueConstraint(columnNames = "text"))
public class Question implements Serializable {
@Id
@GeneratedValue
private Long id;
private String text;
@OneToMany(mappedBy = "question", cascade = CascadeType.ALL, orphanRemoval = true, targetEntity = Answer.class)
private Set<Answer> listAnswers = new HashSet<Answer>();
}
@Entity
public class Answer implements Serializable {
@Id
@GeneratedValue
private Long id;
private String text;
private Integer result = 0;
@ManyToOne(targetEntity = Question.class, cascade = CascadeType.MERGE)
@JoinColumn(name = "question_id", nullable = false)
private Question question;
}
Когда я пытаюсь объединить () сущность, вопрос все данные в ответе перезаписать ("hibernate.hbm2ddl.auto" = "update"):
EntityManagerFactory emf = Persistence.createEntityManagerFactory(
"some.package.settings", properties);
assertTrue(emf.isOpen());
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.merge(question);
if (em.getTransaction().isActive()) {
em.getTransaction().commit();
}
em.close();
emf.close();
В поле ответа объекта Entity есть значения: 0, 1, 2. Мне нужно запретить обновление записи, если Answer.result> 0.
Есть такая аннотация или нет? Я видел аннотации @ PreUpdate / @ PostUpdate. А может сохранять данные перед обновлением и восстанавливать при необходимости, но может существовать другим способом?