在Spring JPA中更新/保存数据

时间:2014-03-12 11:18:32

标签: spring jpa save

我希望有人可以帮我解决这个问题 我使用spring和JPA来保存数据。 当我尝试保存调用我的DAO时,并不是所有数据都被保存。

考虑以下结构

class User
var name
var surname

@OneToMany(mappedBy = "rule",cascade = CascadeType.PERSIST)
@Fetch(FetchMode.SUBSELECT)
set<Address> address;

@OneToMany(mappedBy = "rule",cascade = CascadeType.PERSIST)
@Fetch(FetchMode.SUBSELECT)
set<Job>job;


class Address
List<AddressList>addressList;

class Job
List<JobList>jobList;

基本上发生的是名称和姓氏的变化,但如果我做了与地址或工作类相关的任何更改,则这些都不会被提交。 但是,如果我删除了用户,它可以正常工作,如果我检索用户信息(地址,作业),这些都可以正确检索。

关于可能出现什么问题的任何建议?

3 个答案:

答案 0 :(得分:0)

您只是级联持续操作。更新已保留的实体时,将执行合并操作。所以,我建议级联合并操作:CascadeType.MERGE如果你想在更新时保存相关的实体。

答案 1 :(得分:0)

尝试级联类型all --- CascadeType.ALL。

对于孤儿清除,您应该使用:

CascadeType.DELETE_ORPHAN - 如果你正在使用hibernate

orphanRemoval = true - 如果您使用的是jpa 2.0

手动删除 - 如果以上都不适用

答案 2 :(得分:0)

对您的瞬态对象@Transient进行了decalre?好的BTw -

以下步骤:

  1. 将您的teansient对象声明为@Transient

  2. 使用级联类型all --- CascadeType.ALL

  3. 尝试使用entityManager.flush()冲洗您的实体管理员,然后执行persist()merge()操作。