这是我使用的方法的示例代码。
@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 */}]
}
我目前正在以这种方式进行两次选择,我认为这不是一个好主意。
我想找到一种使用JPA样式进行选择的方法。
答案 0 :(得分:0)
JPA允许您通过new和构造函数创建对象。
Gson gson = new GsonBuilder().setDateFormat("E MMM dd HH:mm:ss Z yyyy").create();
有关构造函数表达式,请参见JPQL文档:
https://docs.oracle.com/html/E13946_04/ejb3_langref.html#ejb3_langref_constructor
Spring Data JPA方法:
基于类的投影(DTO)https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections.dtos