Когда я пытаюсь удалить объект с использованием адаптера исходящего канала, я всегда удаляю исключение отдельного экземпляра. Я знаю, что объект должен быть извлечен и удален в той же транзакции, чтобы избежать этого исключения, но как я могу достичь этого с помощью Spring Integration?Не удается удалить объект JPA с использованием Spring Integration
Чтобы продемонстрировать эту проблему я модифицированную the JPA sample:
PersonService.java
public interface PersonService {
...
void deletePerson(Person person);
}
Main.java
private static void deletePerson(final PersonService service) {
final List<Person> people = service.findPeople();
Person p1 = people.get(0);
service.deletePerson(p1);
}
весна-интегрально-context.xml
<int:gateway id="personService"
service-interface="org.springframework.integration.samples.jpa.service.PersonService"
default-request-timeout="5000" default-reply-timeout="5000">
<int:method name="createPerson" request-channel="createPersonRequestChannel"/>
<int:method name="findPeople" request-channel="listPeopleRequestChannel"/>
<int:method name="deletePerson" request-channel="deletePersonChannel"/>
</int:gateway>
<int:channel id="deletePersonChannel"/>
<int-jpa:outbound-channel-adapter entity-manager-factory="entityManagerFactory"
channel="deletePersonChannel" persist-mode="DELETE" >
<int-jpa:transactional transaction-manager="transactionManager" />
</int-jpa:outbound-channel-adapter>
Когда я называю deletePerson я получаю исключение:
Исключение в нити "основной" java.lang.IllegalArgumentException: Удаление экземпляра отдельностоящий org.springframework.integration.samples.jpa.Person # 1001
UPDATE:
Видимо, я должен был выбран образец ближе к моему фактическому проекту, потому что здесь вы можете просто создать новую транзакцию программной и завернуть как получить и функцию удаления звонит в нее, как это сделал Артем.
В моем проекте у меня есть трансформатор, подключенный к адаптеру исходящего канала. Трансформатор извлекает объект, а адаптер исходящего канала удаляет его. Как я могу заставить трансформатор и адаптер исходящего канала использовать эту транзакцию в этом случае?
Спасибо Артем, это сработало, но есть ли способ сделать это через xml? – John29
См. Мой обновленный вопрос. – John29
Я обновил свой ответ –