我试着用休眠,JPA和JSON来休眠。 我不得不实体象下面这样:JPA和Hibernate dosnt更新一到多关系在第一次尝试中使用JSON的春天休息
University.java
@Entity()
@Table(name = "university")
public class University extends BaseEntity {
private String uniName;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@JoinColumn(name = "university_id", foreignKey = @ForeignKey(name = "university_id"))
private Collection<Student> students;
//setters and getters
}
Student.java
@Entity
@Table(name = "student")
public class Student extends BaseEntity {
private String stuName;
@ManyToOne(fetch = FetchType.EAGER)
@JsonIgnoreProperties("students")
private University university;
//setters and getters
}
我在我的分贝这dumy值。
[
{
"id": 1,
"uniName": "uni1",
"students": [
{
"id": 1,
"stutName": "st1",
"university": {
"id": 1,
"uniName": "uni1"
}
},
{
"id": 2,
"stutName": "st2",
"university": {
"id": 1,
"uniName": "uni1"
}
}
]
}
]
第一次尝试:当我尝试更新它的学生的大学,没有成功 ,这是我的休眠日志
Hibernate:
select
university0_.id as id1_5_1_,
university0_.uniName as uniName2_5_1_,
students1_.university_id as universi3_4_3_,
students1_.id as id1_4_3_,
students1_.id as id1_4_0_,
students1_.stuName as stuName2_4_0_,
students1_.university_id as universi3_4_0_
from
university university0_
left outer join
student students1_
on university0_.id=students1_.university_id
where
university0_.id=?
Hibernate:
update
student
set
stuName=?,
university_id=?
where
id=?
Hibernate:
update
university
set
uniName=?
where
id=?
Hibernate:
update
student
set
stuName=?,
university_id=?
where
id=?
第二次尝试:但是,当我发表相同的数据第二次它是成功和休眠日志是
Hibernate:
select
university0_.id as id1_5_1_,
university0_.uniName as uniName2_5_1_,
students1_.university_id as universi3_4_3_,
students1_.id as id1_4_3_,
students1_.id as id1_4_0_,
students1_.stuName as stuName2_4_0_,
students1_.university_id as universi3_4_0_
from
university university0_
left outer join
student students1_
on university0_.id=students1_.university_id
where
university0_.id=?
Hibernate:
select
student0_.id as id1_4_0_,
student0_.stuName as stuName2_4_0_,
student0_.university_id as universi3_4_0_
from
student student0_
where
student0_.id=?
Hibernate:
select
student0_.id as id1_4_0_,
student0_.stuName as stuName2_4_0_,
student0_.university_id as universi3_4_0_
from
student student0_
where
student0_.id=?
Hibernate:
update
student
set
university_id=?
where
id=?
Hibernate:
update
student
set
university_id=?
where
id=?
与第一个不同!
我在做什么我的hibernate注释错误,或者如果我在我的JSON注释中缺少某些东西,为什么第二次尝试工作。
更新:这是我的编辑服务。
@Override
@Transactional/*(propagation = Propagation.NESTED)*/
public T edit(T entity) throws Exception {
return entityManager.merge(entity);
}
任何帮助和建议表示赞赏。
发布持久数据的代码。 –
@ Abdullah Khan我更新了我的问题 – Generic
你的映射是错误的。阅读Hibernate手册,了解如何正确映射双向OneToMany关联。 –