首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel- JPA :没有向JPA组件发送命令消息的选项(就像在JDBC组件中一样)

Camel- JPA :没有向JPA组件发送命令消息的选项(就像在JDBC组件中一样)
EN

Stack Overflow用户
提问于 2016-05-12 16:43:41
回答 1查看 220关注 0票数 1

在Camel-JDBC组件中,我们可以将select语句作为主体发送到jdbc端点,后者返回结果。

下面的示例代码来自Camel-JDBC网站:

代码语言:javascript
复制
from("direct:projects")
   .setHeader("lic", constant("ASF"))
   .setHeader("min", constant(123))
   .setBody("select * from projects where license = :?lic and id > :?min order by id")
   .to("jdbc:myDataSource?useHeadersAsParameters=true")

为什么Camel-JPA组件中不存在这样的选项?

使用JPA端点作为使用者将轮询数据库。但是,我想要的就是只获取一次数据。

EN

回答 1

Stack Overflow用户

发布于 2016-05-12 19:38:07

Camel没有该功能,因为JPA支持命名查询。你可以按照这些思路来做一些事情。

代码语言:javascript
复制
from("direct:start")
    .pollEnrich("jpa:" + MyEntity.class.getName() + "?consumeDelete=false&consumer.namedQuery=myNamedQuery&consumer.parameters=#params", new MyAggregationStrategy())
.log(LoggingLevel.INFO, "call my entity toString method ${body}");



//spring context OR you can use camel registry
<util:map id="params" key-type="java.lang.String">
    <entry key="param1" value="1"/>
    <entry key="param2" value="2"/>
</util:map>

//JPA model
@Entity
@Table(name = "MyTable")
@NamedQuery(name = "myNamedQuery", query = "SELECT t FROM MyTable t WHERE t.columnName1 = :param1 AND t.columnName2 = :param2")
public class MyEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "PrimaryKey", updatable = false, nullable = false, length = 20)
    private String primaryKey;

    @Column(name = "Param1", length = 5)
    private String param1;

    @Column(name = "Param2", length = 5)
    private String param2;

    //removed setters getters, hascode, equals, and toString for brevity
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37181671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档