Hibernate-OGM mongodb, не может удалять объекты - отсоединен

Итак, я пытаюсь использовать Hibernate OGM (4.1.0.Beta4) с MongoDB, теперь я столкнулся с этой проблемой, которая меня сбивает с толку, поэтому я получаю список созданных мной объектов, затем пытаюсь просмотреть этот список и удалите каждый из них - однако, когда я пытаюсь получить следующее исключение «Удаление отдельного экземпляра», я предполагаю, что я что-то пропустил с настройкой постоянства.

Это вызвано из моей службы отдыха

TestRepo класс

@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@RequestScoped
public class TestService {

@Inject
    private TestRepository testRepo;

    @GET
    @Path("/deleteallplease")
    public String deleteAllTests(){

        for( TestEntity rp : testRepo.findAll() ){
            testRepo.delete( rp );
        }

        return "done done done";
    }


}

persistence.xml

@Stateless
@LocalBean
public class TestRepository {

@Inject
private EntityManager em;

@Inject 
private Logger log;

public List<TestEntity> findAll() {
    return em.createQuery("FROM TestEntity", TestEntity.class).getResultList();
}

Думаю, главное, что меня смущает, - это с помощью deleteAllTests () я получаю список сущностей, затем пытаюсь удалить их, но они уже отсоединены? Так что мне явно не хватает чего-то фундаментального, я подозреваю, что его mongo-ogm и JTA не работают хорошо, потому что mongo не является транзакционным, но я подумал, что ogm абстрагирует это для меня.

<persistence version="2.0"
         xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="
    http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

<persistence-unit name="primary" >
    <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
    <class>com.test.TestEntity</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name="hibernate.ogm.datastore.provider" value="mongodb"/>
        <property name="hibernate.ogm.datastore.database" value="db"/>
        <property name="hibernate.ogm.datastore.host" value="127.0.0.1"/>
        <property name="hibernate.ogm.datastore.port" value="59541"/>
        <property name="hibernate.ogm.datastore.username" value="user"/>
        <property name="hibernate.ogm.datastore.password" value="password"/>
        <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
    </properties>
</persistence-unit>

</persistence>

не видел ваш метод delete (), но я думаю, что вы используете em.remove () для удаления объекта.


person qorpus    schedule 10.07.2014    source источник
comment
спасибо, я действительно отказался от использования OGM - повторное подключение его к сеансу тоже могло помочь.   -  person qorpus    schedule 10.07.2014


Ответы (1)


вы можете попробовать использовать em.remove (em.merge (entity)) для удаления.

забыл упомянуть - я запускаю Wildfly 8.0

person ldy26098    schedule 26.06.2015
comment
Путь к контексту: / TestApp Путь сервлета: / rest Информация о пути: / deleteallplease Строка запроса: null Трассировка стека org.jboss.resteasy.spi.UnhandledException: javax.ejb.EJBException: java.lang.IllegalArgumentException: Удаление отдельного экземпляра com.testapp .jpa.model.TestEntity # 402881e546fa0f740146fa10cf210000 org.jboss.resteasy.core.ExceptionHandler.handleApplicationException (ExceptionHandler.java:76) org.jboss.resteasy.core.ExceptionHandler.handle12ss. core.SynchronousDispatcher.writeException (SynchronousDispatcher.java:149) org.jboss.resteasy.core.SynchronousDispatcher.invoke (SynchronousDispatcher.java:372) org.jboss.resteasy.core.SynchronousDispatcher.invoke179. jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service (ServletContainerDispatcher.java:220) org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service (HttpSerss.jresava.json.service) lugins.server.servlet.HttpServletDispatcher.service (HttpServletDispatcher.java:51) javax.servlet.http.HttpServlet.service (HttpServlet.java:790) io.undertow.servlet.quler.java: io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest (ServletSecurityRoleHandler.java:61) io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest (ServletDispatchingHandler.handleRequest (ServletDispatching. handleRequest (SecurityContextAssociationHandler.java:78) io.undertow.server.handlers.PredicateHandler.handleRequest (PredicateHandler.java:25) io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest. security.handlers.AuthenticationCallHandler.handleRequest (AuthenticationCallHandler.java:52) io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest (AbstractConfi dentialityHandler.java:45) io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest (ServletConfidentialityConstraintHandler.java:61) io.undertow.servlet.handler.security.CachedAuthenticatedSession70. security.handlers.SecurityInitialHandler.handleRequest (SecurityInitialHandler.java:76) io.undertow.server.handlers.PredicateHandler.handleRequest (PredicateHandler.java:25) org.wildfly.extension.undertow.security.jacc. JACCContextIdHandler.handleRequest (JACCContextIdHandler.java:61) io.undertow.server.handlers.PredicateHandler.handleRequest (PredicateHandler.java:25) io.undertow.server.handlers.PredicateHandler.java.HandleRequest). servlet.handlers.ServletInitialHandler.handleFirstRequest (ServletInitialHandler.java:240) io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest (ServletInitialHandler.java:227) io.undertowler.jpg ) io.undertow.servlet.handlers.ServletInitialHandler $ 1.handleRequest (ServletInitialHandler.java:146) io.undertow.server.Connectors.executeRootHandler (Connectors.java:168) io.undertow.server.HttpSerun : 687) java.util.concurrent.ThreadPoolExecutor.runWorker (Неизвестный источник) java.util.concurrent.ThreadPoolExecutor $ Worker.run (Неизвестный источник) java.lang.Thread.run (Неизвестный источник) - person qorpus; 28.08.2015