OpenJPA-合并时未保留空关系值
我在理解/找出OpenJPA的问题时遇到了问题,我希望这里的人能帮我解决 基本上,我有以下两个实体:OpenJPA-合并时未保留空关系值,jpa,openjpa,Jpa,Openjpa,我在理解/找出OpenJPA的问题时遇到了问题,我希望这里的人能帮我解决 基本上,我有以下两个实体: @Entity @Table(name = "images") public class Image { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name = "id") private Long id; @Column(name = "name") priva
@Entity
@Table(name = "images")
public class Image {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "path")
private String path;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
@Entity
@Table(name = "people")
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@ManyToOne
@JoinColumn(name = "image_id")
@ForeignKey(name = "fk_person-image")
private Image image;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Image getImage() {
return image;
}
public void setImage(Image image) {
this.image = image;
}
}
如您所见,一个人
可以有一个图像
。这是一个可选列,支持null
值。当REST Web服务调用来更新人员
更改图像
字段时,如果图像
设置为null
,则不会更新数据库,但是如果图像
更改为不同的现有图像
,则会保存
我怀疑这与Person
从外部进入(分离)的事实有关,因为如果我从DAO服务获得Person
,将Image
设置为null
,并使用该实例调用update/merge方法,它将更新数据库
我可以通过添加以下属性使其工作:
<property name="openjpa.DetachState" value="fetch-groups(DetachedStateField=false)"/>
然而,这似乎有一些缺点,因为从数据库获取数据时,不再填充其他关系。(例如,检索建筑时建筑中的房间)
以前有人遇到过这种情况吗?关于如何处理这个问题有什么想法吗?我很想测试一下Hibernate/Eclipselink,看看他们是否/如何处理这个问题
任何帮助都将不胜感激,过去两天我一直在绞尽脑汁 你怎么坚持?你能把一些片段也贴在这里吗?我还想知道多人关系不是双向的,对吗?你试过使用mappedBy吗?(这可能无法解决实际问题,我只是问:))你尝试过这种方法吗?