簡體   English   中英

如何使用帶有 MongoDB 的 Hibernate OGM 刪除數據庫或集合

[英]How do I drop a database or collection using Hibernate OGM with MongoDB

我無法使用 Hibernate OGM 刪除數據庫或集合。 我試過使用這些本機查詢,但兩者都拋出異常

entityManagerFactory = Persistence.createEntityManagerFactory("myPersistence-unit");
EntityManager entityManager = openEntityManager( entityManagerFactory);
entityManager.getTransaction().begin();

    String queryDropCollection = "db.Person.drop()";
    String queryDropDB = "db.dropDatabase()";

    entityManager.createNativeQuery(queryDropCollection).executeUpdate();
    entityManager.createNativeQuery(queryDropDB).executeUpdate();

entityManager.getTransaction().commit();
entityManager.close();

刪除集合的異常:

Exception in thread "main" com.mongodb.util.JSONParseException: 
db.Person.drop()
^

刪除數據庫的異常:

Exception in thread "main" com.mongodb.util.JSONParseException: 
db.dropDatabase()
^

抱歉,目前無法執行此操作。

不過,我不確定在 OGM 使用數據庫時刪除數據庫是否是個好主意。

我創建了這兩個問題來跟蹤它:

感謝您的反饋。 如果您想進一步幫助我們,您可以嘗試解決項目中的問題並向我們發送修復程序。 我們會幫助你。

所以,只是為了給出一個如何在測試中使用它的具體例子,我添加了這個答案。

我使用 OGM 和 MongoDB 的工作可重復測試類如下所示:

class OgmAccessorTest {

    private static EntityManagerFactory entityManagerFactory;
    private static EntityManager entityManager;
    private static TransactionManager transactionManager;

    @BeforeAll
    static void initialize() {
        entityManagerFactory = Persistence.createEntityManagerFactory("ogm-mongodb");
        entityManager = entityManagerFactory.createEntityManager();
        transactionManager = com.arjuna.ats.jta.TransactionManager.transactionManager();
    }

    @BeforeEach
    void clearDatabase() throws NotSupportedException, SystemException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException {
        transactionManager.begin();
  // Collection == name of the class being saved ⮧
        entityManager.createNativeQuery("db.GameCharacter.drop()").executeUpdate();
        transactionManager.commit();
    }

    @Test
    void writeShouldBeAbleToWriteRetreivableGameCharacterToMongoDB() throws SecurityException, IllegalStateException, NotSupportedException, SystemException, HeuristicMixedException, HeuristicRollbackException, RollbackException {

        GameCharacter sylvia = GameCharacters.sylvia();

        OgmAccessor.write(sylvia, entityManagerFactory);

        transactionManager.begin();
        GameCharacter loadedGameCharacter
            = entityManager.find(GameCharacter.class, sylvia._id);

        assertNotNull(loadedGameCharacter);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM