【问题标题】:implement DAO in spring boot with JPA使用 JPA 在 Spring Boot 中实现 DAO
【发布时间】:2019-10-28 21:07:33
【问题描述】:

我正在使用 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;
}

请帮我实现以下输入。

【问题讨论】:

  • 你得到一个异常或者repo.findBybatchID的结果是什么?
  • 得到结果,但它说无法将实体类转换为 DTO 类。
  • 这个错误在哪里?你能发布堆栈跟踪吗?还有你的 repo 实现?
  • 为什么不实现将实体转换为 dto 的映射器?或者只是使用 BeanUtils :)
  • 我觉得问题中缺少很多细节,你能提供足够的细节吗,比如exception,the proper request body,JpaRepository interface

标签: java spring-boot jpa entity dao


【解决方案1】:

你的仓库应该是这样的:

@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(); 
  }
}

至少是这样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-23
    • 2013-03-12
    • 2017-12-17
    • 1970-01-01
    • 2011-01-30
    • 2018-06-21
    • 2016-01-12
    • 2020-01-01
    相关资源
    最近更新 更多