微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将对象字段而不是单个参数传递给自定义存储库SQL查询

如何解决将对象字段而不是单个参数传递给自定义存储库SQL查询

是否可以将对象传递给自定义存储库查询,并且可以将对象的字段用作sql内部的参数?我发现的所有示例都将所有参数都列为方法参数。

我正在尝试将upsert逻辑实现为CrudRepository上的自定义查询。我想将Person对象传递给该方法,并使用一些业务标识符来检测冲突和更新,例如:

class Person {
  private Integer id;
  private String name;
  private String email;
  // getters & setters removed for brevity
}

不幸的是,由于无法解析参数nameemail,此操作失败了:

@Repository
public interface PersonRepository extends CrudRepository<Person,Integer> {
  @Query(value =
          "INSERT INTO person (name,email)" +
          "VALUES (:name,:email)" +
          "ON CONFLICT (email) DO UPDATE")
  Person upsertOnEmail(Person p);
}

对我来说,一种解决方法是使用findFirstByEmail之类的东西,更新该对象并将其存储(全部存储在事务中),但是更新似乎更有效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。