为了账号安全,请及时绑定邮箱和手机立即绑定

使用输入列表获取实体对象列表:Spring Data JPA - Hibernate

使用输入列表获取实体对象列表:Spring Data JPA - Hibernate

至尊宝的传说 2021-12-10 10:08:19
我有一个 APIObjects 列表List<APIObjects> apiObjectList作为我的 API 的输入(通过 HTTP-Post),我需要检查这个对象中的所有参数是否存在于我的数据库中DatabaseObject.java@Data@Builder@NoArgsConstructor@AllArgsConstructor@Entity@Table(name = "my_table")public class DatabaseObject {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    Long id;    @Column(name = "name")    String name;    @Column(name = "group_id")    String groupId;    @Column(name = "artifact_id")    String artifactId;    @Column(name = "version")    String version; }APIObject.java@Data@NoArgsConstructor@AllArgsConstructor@Builderpublic class APIObject{    private String groupId;    private String artifactId;    private String version;}在我Repository Interface我有这样的方法List<DatabaseObject> findByGroupIdAndArtifactIdAndVersionIn (List<APIobject> apiList);但我得到这个例外Caused by: java.lang.IllegalArgumentException: No parameter available for part artifactId SIMPLE_PROPERTY (1): [Is, Equals].如何为此编写Spring-data-JPA方法?所有三个参数都应该匹配(groupid, artifactid and version)
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

如果要从方法名称创建查询,则应更改存储库方法:

List<DatabaseObject> findByGroupIdAndArtifactIdAndVersion(String groupId, String artifactId, String version);

或使用In关键字:

List<DatabaseObject> findByAPIobjectIn(Collection<APIObject> apis)

有关更多详细信息,请参阅查询创建


查看完整回答
反对 回复 2021-12-10
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

尝试使用Query by Example技术。在您的情况下,解决方案可能如下所示:


DatabaseObject dbObject = new DatabaseObject(apiObject.getGroupId(), ...);

Iterable<DatabaseObject> dbObjects = DatabaseObjectRepository.findAll(Example.of(dbObject));


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 305 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信