繁体   English   中英

休眠注释Java映射

[英]Hibernate Annotations Java Map

我需要休眠注释的帮助。

我有以下2个实体:

public class Custom {
 private Map<KeyObject, ValueObject> properties;

 @oneToMany(mappedBy = "customId", cascade = CascadeType.All)
 @MapKey(name = "keyObject")
 public Map<KeyObject, ValueObject> getProperties();

.....
}

public class ValueObject {
 private KeyObject keyObject;
 private Long customId;
 private String value;

...getters and setters
}

我有一个简单的dao类,用于保存,更新,选择和删除记录。

如果我从Custom对象的地图中删除一条记录,然后调用customDao.save(custom),我的更改将永远不会持久保存到数据库中。 它也不会引发任何错误。

我在休眠示例中看到,我可以将customId定义为Custom对象,而不是KeyValue表中的Long,但是我不想这样做。

我的实体设置不正确吗?

当关联具有mappedBy属性时,表示:我不是该关联的所有者。 对于关联的这一方面所做的任何更改对于Hibernate都无关紧要。 重要的是协会的另一面。

我什至惊讶这甚至行得通,因为我希望Hibernate在另一端需要Custom类型的ManyToOne。 但是可以确定的是,如果您没有在KeyValue / ValueObject中将custom / customId字段设置为null,则Hibernate不会将此列设置为null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM