При вызове метода JPA метод remove (): «JTA EntityManager не может использовать getTransaction ()» - PullRequest
2 голосов
/ 24 февраля 2011

Я создал Role сущность, я хотел бы сделать над ней операции CRUD. Все работает хорошо, кроме операции «D» (удаление).

Я использую что-то похожее на этот Пример кода ObjectDB .

Как указано в приведенной выше веб-странице,

Исключение IllegalArgumentException удалить, если аргумент не является экземпляр класса сущности или, если это это отдельная сущность.

Как мне это сделать? Что я сделал не так?

Моя сущность Role связана с сущностью User (роль может «иметь» нескольких пользователей, у пользователя только одну роль). Однако экземпляр Role, который я хочу удалить, никоим образом не связан с какими-либо активными пользовательскими экземплярами.

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

Спасибо за ваш ответ, но он мне мало помог. Хотя я думаю, что это было связано с JTA. Однако я нашел решение, поэтому хочу поделиться им здесь:

Вместо:

public void removeRole(Role aRole) {
    entityManager.remove(aRole);    
} 

Все, что мне нужно было сделать, это:

public void removeRole(Role aRole) {
entityManager.remove(entityManager.merge(aRole));   
}

И это делает трюк. Пойди разберись.

1 голос
/ 28 февраля 2011

Какую ошибку вы получаете?

Если вы используете JTA, вы не можете использовать транзакции EntityManager, вы должны использовать транзакции JTA (EJB или транзакцию поиска пользователя из conext).Либо не настраивайте JPA для использования JTA, либо используйте JTA, а не транзакции EM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...