首页 > 解决方案 > 使用 JPA 在 Spring Boot 中实现 DAO

问题描述

我正在使用 JPA 在 Spring Boot 中使用 In 运算符编写查询

select * from data where name in ("XYZ","XY")

我无法使用 JPA 在 Spring Boot 中为以下输入实现 DAO 实现。

 {"name":["XYZ","XY"]}

控制器

@PostMapping("/embdata/dto/name")
public List getByBatchIdsWithDTO(@RequestBody EmbDataDTO dto){
    return service.getBatchIds(dto);
}

服务方式:

    List<Data> obj=repo.findBybatchID(List<String> name)

回购接口:

    List<Data> findByBatchIdIn(List wageId);

我的实体类

@Entity
@Data
@Table(name="data")
public class Data{

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    int id;

    @Column(name="name")
    String name;

    @Column(name="address")
    String address;
}

我的 DTO 课程:

@Data
public class EmbDataDTO {
   private int id;
   private String name;
   private String address;
}

请帮助我实施以下输入。

标签: javaspring-bootjpaentitydao

解决方案


您的回购应如下所示:

@Repository
@Transactional
class YourRepo {
  List<Data> findByBatchIdIn(List wageId) {
    Query q = entityManager.createQuery("select * from data where name in (:list)");
    q.setListParameter("list", wageId); 
    return q.execute(); 
  }
}

至少是这样的。


推荐阅读