【发布时间】:2019-12-12 17:55:17
【问题描述】:
我使用的是hibernate(没有spring),但我有一个关于映射的问题。 我有 2 个实体,“用户”和“Enquête”,使用此映射代码:
入队:
@ManyToOne(fetch = FetchType.LAZY)
@Cascade(org.hibernate.annotations.CascadeType.ALL);
private User responsable;
在用户中:
(与 Enquête 无关,因为目前没有“映射”)
当我尝试像这样保存一个新的“Enquête”时:
private static void addEnqueteInBdd(String titre,Date dateCreation,Date dateFermeture,Boolean cloture,int idEnquete,Formulaire formulaire,User responsable,List<Collecte> collectes) {
Transaction transaction = null;
Enquete en = null;
Session session = HibernateUtil.getSessionFactory().openSession();
try {
transaction = session.beginTransaction();
en = new Enquete( titre, dateCreation, dateFermeture, cloture, collectes, formulaire,responsable );
session.save(en);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
我有这个错误:
错误:HHH000346:托管刷新期间出错[行已被另一个事务更新或删除(或未保存的值映射不正确):[Model.User#1]]
PS:这是我在代码中使用休眠的第一个操作,所以我认为这与另一个事务无关。
【问题讨论】:
-
嗨。我认为还必须保存用户 ID。尝试在用户字段中添加注释
@joinColumn。