java - 使用输入列表获取实体对象列表:Spring Data JPA - Hibernate
问题描述
我有一个 APIObject 列表List<APIObjects> apiObjectList
作为我的 API 的输入(通过 HTTP-Post),我需要检查此对象中的所有参数是否存在于我的数据库中
数据库对象.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
@Builder
public 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)
解决方案
如果要从方法名称创建查询,则应更改存储库方法:
List<DatabaseObject> findByGroupIdAndArtifactIdAndVersion(String groupId, String artifactId, String version);
或使用In
关键字:
List<DatabaseObject> findByAPIobjectIn(Collection<APIObject> apis)
有关详细信息,请参阅查询创建。
推荐阅读
- unity3d - 如何在 Unity 中对 Playstation 平台进行区域检查?
- forms - 默认选中单选按钮(未映射的 ChoiceType 字段)
- web-services - 修改底层 Web 服务签名后如何回收 ColdFusion Web 服务
- agile - SCRUM - 敏捷开发 - 一名开发人员同时处理多个用户故事
- mysql - 主键创建失败后查找重复行
- laravel - 上传图片问题
- google-cloud-platform - 我可以从同一个 windows 2012 服务器同时使用多个 gcloud 帐户吗?
- mysql - RDS InnoDB RAM 使用问题
- python - AttributeError:“‘numpy.ndarray’对象没有属性‘plot’。”
- google-sheets - 使用 Query & Importrange 在 2 个日期和 if 条件之间过滤以根据条件更改日期的值