如何解决将对象字段而不是单个参数传递给自定义存储库SQL查询
是否可以将对象传递给自定义存储库查询,并且可以将对象的字段用作sql内部的参数?我发现的所有示例都将所有参数都列为方法参数。
我正在尝试将upsert逻辑实现为CrudRepository上的自定义查询。我想将Person对象传递给该方法,并使用一些业务标识符来检测冲突和更新,例如:
class Person {
private Integer id;
private String name;
private String email;
// getters & setters removed for brevity
}
不幸的是,由于无法解析参数name
和email
,此操作失败了:
@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 举报,一经查实,本站将立刻删除。