Итак, я пытаюсь использовать 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 () для удаления объекта.