mongoDB hibernate-ogm (5.4.1.Final) remove entity keeps _id



我使用hibernate ogm和Apache Deltaspike Data来保存和删除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 Data"完全"删除实体myRepository.attachAndRemove(myEntity(方法。所有字段都被删除_id";。

> db.MyEntity.find().pretty()
{ "_id" : "b359df37-d108-46c7-8c30-ae14c4064e00" }

但是,如果我不使用@Version,实体将被完全删除。

欢迎对这种行为/问题作出任何解释。

提前感谢

这似乎是Hibernate OGM 中的一个错误

解决方法:

EntityTransaction tx = em.getTransaction();
tx.begin();
em.createNativeQuery("db.MyEntity.remove({_id:"" + entity.getId() + ""})").executeUpdate();
tx.commit();

最新更新