我使用hibernate-ogm和数据来保存和删除mongoDB中的一个简单实体。
拯救是有效的。但是删除一个实体,空除_id以外的所有字段。
@Entity
public class MyEntity implements Serializable {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;
@NotNull
private String name;
@Version
private Integer version;
@ElementCollection
private Map<String, String> myMap;
public MyEntity() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<String, String> getMyMap() {
return myMap;
}
public void setMyMap(Map<String, String> myMap) {
this.myMap = myMap;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
}正确保存在mongodB中
> db.MyEntity.find().pretty()
{
"_id" : "b359df37-d108-46c7-8c30-ae14c4064e00",
"name" : "my entity name",
"version" : 0,
"myMap" : {
"key1" : "value1",
"key2" : "value2"
}
}实体不能使用hibernate-ogm和Deltaspike数据myRepository.attachAndRemove(myEntity)方法“完全”删除。除"_id“外,所有字段都将被移除。
> db.MyEntity.find().pretty()
{ "_id" : "b359df37-d108-46c7-8c30-ae14c4064e00" }但是,如果我不使用@Version,实体就会被完全删除。
对这个行为/问题的任何解释都是值得欢迎的。
提前感谢
发布于 2021-06-22 19:12:14
解决办法:
EntityTransaction tx = em.getTransaction();
tx.begin();
em.createNativeQuery("db.MyEntity.remove({_id:\"" + entity.getId() + "\"})").executeUpdate();
tx.commit();https://stackoverflow.com/questions/68073127
复制相似问题