首页 > 代码库 > play项目实战-如何进行upsert操作
play项目实战-如何进行upsert操作
本文为作者原创,转载请标明出处。原作者:Tony_老七
原文链接:http://blog.csdn.net/tonylee0329/article/details/42463211
项目中有进行upsert的需求,查看了现有Model是没有的
解决办法想了两种:
1.使用现有Model的delete然后再save()
2.使用原生sql执行upsert操作
因为刚接触Play不久,所以想都试一下,果然收获还是挺多的。
方案一:
先调用delete方法,可以传入key
public static void deleteByActName(String actName){
ActTargetConfig.delete("act_name=?", actName);
}
ActTargetConfig.delete("act_name=?", actName);
}
然后再执行save方法。
有一点需要注意的是:delete方法请不要写在继承Controller的该类中,否则会发生跳转的。
方案二:
String sql="xx";
Query query = Model.em().createNativeQuery(sql);
query.setParameter(xx,xx);
query.executeUpdate();
有两点需要注意,
1.在sql中不要把占位符放到‘‘之间,如name=‘?‘,这种方式检测不到占位符的,
会报如下错误:
Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2
2.占位符index从1开始
同时可以参考JPA规范使用http://openjpa.apache.org/builds/1.2.3/apache-openjpa/docs/jpa_overview_sqlquery_obj.html
play项目实战-如何进行upsert操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。