如何使用 JPA 将数据库表放入 DTO 中的属性
How to put db tables into properties in DTO using JPA
这是我使用的方法的示例代码。
@Getter
@Setter
@AllArgsConstructor
public class MyDTO {
private List<EntityA> listA;
private List<EntityB> listB;
}
@RepositoryRestController
public class MyController {
@Autowired
private EntityARepository repositoryA;
@Autowired
private EntityBRepository repositoryB;
@RequestMapping(method = RequestMethod.GET, value = "/getDTO")
public MyDTO getDTO() {
return new MyDTO(repositoryA.findAll(), repositoryB.findAll());
}
}
@RepositoryRestResource
public interface EntityARepository extends JpaRepository<EntityA, Long> {}
@RepositoryRestResource
public interface EntityBRepository extends JpaRepository<EntityB, Long> {}
换句话说,我想将所有两个表都放入集合中。
这是我期待的回应。
{
"listA" : [{.../* all EntityA */}],
"listB" : [{.../* all EntityB */}]
}
我目前正在以这种方式进行两次select,我认为这不是一个好主意。
我想找到一种方法 select 一旦使用 JPA 样式。
JPA 允许您通过 new 和构造函数创建对象。
SELECT new MyDTO(o.prop1, o.prop2) FROM Object o
有关构造函数表达式,请参阅 JPQL 文档:
https://docs.oracle.com/html/E13946_04/ejb3_langref.html#ejb3_langref_constructor
Spring 数据 JPA 方法:
Class-based 预测 (DTO) https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections.dtos
这是我使用的方法的示例代码。
@Getter
@Setter
@AllArgsConstructor
public class MyDTO {
private List<EntityA> listA;
private List<EntityB> listB;
}
@RepositoryRestController
public class MyController {
@Autowired
private EntityARepository repositoryA;
@Autowired
private EntityBRepository repositoryB;
@RequestMapping(method = RequestMethod.GET, value = "/getDTO")
public MyDTO getDTO() {
return new MyDTO(repositoryA.findAll(), repositoryB.findAll());
}
}
@RepositoryRestResource
public interface EntityARepository extends JpaRepository<EntityA, Long> {}
@RepositoryRestResource
public interface EntityBRepository extends JpaRepository<EntityB, Long> {}
换句话说,我想将所有两个表都放入集合中。
这是我期待的回应。
{
"listA" : [{.../* all EntityA */}],
"listB" : [{.../* all EntityB */}]
}
我目前正在以这种方式进行两次select,我认为这不是一个好主意。
我想找到一种方法 select 一旦使用 JPA 样式。
JPA 允许您通过 new 和构造函数创建对象。
SELECT new MyDTO(o.prop1, o.prop2) FROM Object o
有关构造函数表达式,请参阅 JPQL 文档:
https://docs.oracle.com/html/E13946_04/ejb3_langref.html#ejb3_langref_constructor
Spring 数据 JPA 方法:
Class-based 预测 (DTO) https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections.dtos