2016-09-30 52 views
0

我使用下面的代碼刪除所有來自MongoDB的集合與給定parent_id元素以去除MongoDB的元素:無法使用Hibernate OGM

final String strQuery = "db.Child.remove({'$query':{'PARENT_ID':'" + parentId + "'}})"; 
       final Query query = entityManager.createNativeQuery(strQuery, Child.class); 
       query.executeUpdate(); 

不過,我收到以下異常:

Unexpected Exception 
com.mongodb.util.JSONParseException: 
db.Child.remove({'$query':{'CHILD_ID':'7313c076-dbaa-4557-b80f-68d040b65d82'}}) 

如果我用find代替remove,我會得到結果。不知道在aboev提到的本機查詢中導致JSON解析器錯誤的原因。

我使用的Hibernate OGM 4.3版本最終以蒙戈-DB 3.2

+0

所以我得出的結論是:我不能使用'$ query'作爲它的棄用和不再支持,'.sort()'遊標方法不被hibernate OGM 5.0.1支持。任何其他的選擇,然後我排序在我的代碼? –

+1

這是不幸的,但這是由於MongoDB不兼容的變化從3.0到3.2。由於這些變化,OGM 5.0並不能很好地支持MongoDB 3.2。我不久前在主分支中修復了這個問題:請參閱https://github.com/hibernate/hibernate-ogm/pull/749/commits/e3d008fa01f98f568d64a9899145aa68e13b0507。我們計劃儘快發佈OGM 5.1的第一個alpha版本,並且它應該使用起來相當安全。 –

+0

有我想到JPA有一個em.remove方法... –

回答

1

的Hibernate OGM 4.3不支持原生查詢刪除操作。

你應該給OGM 5.0.2.Final試一下:它應該解決你的問題,因爲我們增加了對很多其他操作(以及許多其他修復和改進)的支持。

+0

碰撞休眠OGM版本後,現在我得到以下內容: '由於:com.mongodb.WriteConcernException:寫入失敗,錯誤代碼2和錯誤消息'未知頂級運算符:$ query'' –

+0

好的,刪除'$ query'構造似乎已經成功了。你有任何想法如何使用'$ orderBy'構造查找查詢嗎? –

+0

令人失望的是,在文檔[這裏](https://docs.jboss.org/hibernate/stable/ogm/reference/en-US/html_single/#jp_ql_queries)中的例子並不真正起作用。我無法使用'$ query'結構作爲失敗,出現上述錯誤。 –