我希望有人可以帮我解决这个问题 我使用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;
基本上发生的是名称和姓氏的变化,但如果我做了与地址或工作类相关的任何更改,则这些都不会被提交。 但是,如果我删除了用户,它可以正常工作,如果我检索用户信息(地址,作业),这些都可以正确检索。
关于可能出现什么问题的任何建议?
答案 0 :(得分:0)
您只是级联持续操作。更新已保留的实体时,将执行合并操作。所以,我建议级联合并操作:CascadeType.MERGE
如果你想在更新时保存相关的实体。
答案 1 :(得分:0)
尝试级联类型all --- CascadeType.ALL。
对于孤儿清除,您应该使用:
CascadeType.DELETE_ORPHAN - 如果你正在使用hibernate
orphanRemoval = true - 如果您使用的是jpa 2.0
手动删除 - 如果以上都不适用
答案 2 :(得分:0)
对您的瞬态对象@Transient
进行了decalre?好的BTw -
以下步骤:
将您的teansient对象声明为@Transient
使用级联类型all --- CascadeType.ALL
。
尝试使用entityManager.flush()
冲洗您的实体管理员,然后执行persist()
或merge()
操作。