Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA onetoone关系目标获取插入而不是更新_Java_Mysql_Jpa - Fatal编程技术网

Java JPA onetoone关系目标获取插入而不是更新

Java JPA onetoone关系目标获取插入而不是更新,java,mysql,jpa,Java,Mysql,Jpa,我已经看到了类似的问题,但还没有从中找出答案 我有两个豆子,它们是单向的一对一关系 下表包含请求附件的forigen键 public class Requesttracking implements Serializable { @OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.PERSIST) @JoinColumn(name="raid") private Requestattachment requestattachment; 这是我

我已经看到了类似的问题,但还没有从中找出答案

我有两个豆子,它们是单向的一对一关系

下表包含请求附件的forigen键

public class Requesttracking implements Serializable {
@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.PERSIST)
@JoinColumn(name="raid")
private Requestattachment requestattachment;
这是我用来存储附件的表

public class Requestattachment implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int raid;

@Lob
private byte[] attachment;
现在要添加一个新实体,我只需添加Requesttracking.set(requestattachment)并将其持久化,它就能完美地工作

我的问题是当我尝试更新requestracking时

Requesttracking r=em.find(Requesttracking.class, rt.getRqid());
r.setRequestattachment(rt.getRequestattachment());
em.flush();
它不是更新requestattachment,而是创建一个新的requestattachement,将其添加到requestattachment表中,并将新的forigen键添加到requesttracking表中

我的问题是,现在requestattachment中只有一个条目没有意义

我希望发生的是requestattachment保留相同的主键,只是更新附件,因此requesttracking中的外键保持不变


我已经想到了几种解决方法,只要在更新时删除旧的requestattachment即可。或者手动更新requestattachment,并将其保留在请求跟踪中。但我觉得真的应该有更好的方法,我遗漏了一些东西,

“rt.getRequestAttachment”处于什么状态?转瞬即逝的独立的托管?您确定rt.getRequestattachment()返回托管实例吗?@NeilStockton它处于分离状态,然后可能查看您使用的JPA实现的日志,看看它对该操作的说明。我知道我使用的impl会说什么是happening@NeilStockton明白了谢谢