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

标签 java spring hibernate spring-boot spring-data-jpa

我有一个 APIObject 列表 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
@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)

参见Query Creation了解更多详情。

关于java - 使用输入列表获取实体对象列表 : Spring Data JPA - Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53005952/

相关文章:

java - 比较数组内的距离

Java:通过Spring创建基于OCP的工厂?

spring - 是否可以将 Spring Data Rest 配置为使用 id 作为引用而不是 URI?

java - 在 Spring 中 Autowiring 多个数据源

java - hibernate 分布式二级缓存选项

java - Google Tango 更新监听器 onXyzIjAvailable 回调永远不会被调用

java - Java 中泛型、类型、通配符之间的区别

java - minOccurs设置为0的XSD日期类型现在的值为“<xml-fragment…”(可设置为false)

hibernate - Spring + Hibernate SessionFactory + AbstractRoutingDataSource

java - 多参数查询