Как вставить запись в базу данных с помощью Apache Camel JPA? - PullRequest
0 голосов
/ 01 мая 2019

Я не понимаю, как использовать camel-jpa.

У меня есть сущность:

@Entity
@Table(name = "task")
public class Task {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @Column(name = "task_uuid", nullable = false)
    private UUID taskUuid;

    @Column(name = "status", nullable = false)
    private String status;
}

и хранилище

@Repository
public interface TaskRepository extends JpaRepository<Task, Long> {
}

В этом классе я слушаю queue_1 и преобразовываю сообщение в формат для передачи в queue_2

@Service
public class RoutingMessage extends RouteBuilder {

    private final TaskRepository taskRepository;

    private static final Logger log = LoggerFactory.getLogger(RoutingMessage.class);

    @Autowired
    public RoutingMessage(TaskRepository taskRepository) {
        this.taskRepository = taskRepository;
    }

    @Override
    public void configure() throws Exception {
        from("jms:{{queue1}}")
                .process(exchange -> {
                    String s = JsonUtil.convertJsonToXmlTaskEntity(String.valueOf(exchange.getIn().getBody()));
                    exchange.getIn().setBody(s);
                })
                .to(ExchangePattern.InOnly, "jms:{{queue2}}")
                .log("send to queue2");
    }
}

Как добавить сущность вставки (Задача) в базу данных в методе configure ()? (Я использую Spring boot)

1 Ответ

0 голосов
/ 01 мая 2019

Для одного компонента:

.to("jpa:your.package.and.entity.classname")

Для списка компонентов:

.to("jpa:your.package.and.entity.classname?entityType=java.util.ArrayList")

Я не знаю, гдевы хотите сохранить, что-то вроде:

from("jms:{{queue1}}")
    .process(exchange -> {
        String s = JsonUtil.convertJsonToXmlTaskEntity(String.valueOf(exchange.getIn().getBody()));
        exchange.getIn().setBody(s);
    })
    .to(ExchangePattern.InOnly, "jms:{{queue2}}")
    .log("send to queue2");
    .to("jpa:your.entity.package.Task")

вы можете сделать гораздо больше с компонентом JPA, см. документы и репозиторий Github

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