Я создаю веб-приложение на основе Spring MVC и Hibernate.У меня есть существующая модель домена, и приложение в основном работает.
У меня есть объект домена с именем Status и соответствующий класс Spring Service, содержащий стандартные методы CRUD, которые вы ожидаете (createStatus(Status s)
; и т. Д.).Метод сохранения нового статуса в настоящее время работает нормально и выглядит следующим образом:
@Transactional
public void createStatus(Status s) {
statusDao.persist(s);
}
Все хорошо и работает нормально.Затем я добавил новый объект Domain с именем Notification, и у него возникли проблемы с сохранением объекта в БД (ничего не сохранялось и ошибок не регистрировалось) - поэтому для проверки я временно попытался создать фиктивный объект Notification и сохранить его внутри createStatus.() (я знаю, что это уродливо - но смысл был в том, чтобы попытаться сохранить его где-то, я знаю, что транзакции работают, а другие объекты сохраняются - это исключает проблемы транзакций).
Обновленный метод createвыглядит следующим образом:
@Transactional
public void createStatus(Status s) {
statusDao.persist(s);
Notification n = new Notification();
getEntityManager().persist(n);
}
Теперь, когда я его запускаю, Состояние все еще сохраняется, но объект Уведомления не сохраняется, и в журнале нет ошибок.
Кто-нибудь испытываланалогичные проблемы, когда определенные сущности не сохраняются?
ОБНОВЛЕНИЕ:
Ниже приведены сущности (статус и уведомления) - они управляются аннотациями, поэтому файлы hbm отсутствуют:
Статус:
@Entity
@Table(name = "BF_STATUS")
@DiscriminatorValue("Status")
public class Status extends PersistableObject {
private static final long serialVersionUID = 4925606208793500282L;
@Column(name = "TITLE")
protected String title;
@Column(name = "DEADLINE")
private Date deadline;
@Column(name = "DETAILS")
@Lob
protected String details;
...
Accesors/Mutators
}
Уведомление:
@Entity
@Table(name = "BF_NOTIFICATION")
@DiscriminatorValue("notification")
public class Notification extends PersistableObject {
private static final long serialVersionUID = -8935712447903901463L;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "LINKED_ACTIVITY", nullable = true)
private Activity activity;
@Column(name = "notificationRead")
private boolean read = false;
...
Accessors/Mutators
}