我试图以这种方式获得 process
和 subprocess
的 ProcessDTO
对象的 java 列表:
[{"process": {
"code": "AB",
"name": "Proc1"
"subprocesses":
[{"code": "cd", "name": "subProc1"}],
[{"code": "ef", "name": "subProc2"}],
[{"code": "gh", "name": "subProc3"}]
}
}]
这是我到目前为止所拥有的:
SELECT distinct C.code as process_code, C.name as process_name, A.code as subprocess_code, A.name as subprocess_code FROM subprocess A
inner join zone B
on A.id = B.subprocess_id
inner join process C
on C.id = B.process_id
ORDER BY C.code;
但是当我创建 DTO 类时:
public class ProcessDto {
private Long id;
private String code;
private String name;
private List<Subprocess> subprocess;
}
以及查询:
@RepositoryRestResource(itemResourceRel = "process", collectionResourceRel = "processes", path = "process")
public interface ProcessDataRestRepository extends JpaRepository<Process, Long> {
@Query("Select p.code, p.name, sp.code, sp.name " +
"from Process p " +
"inner join Zone z on p.id = z.process " +
"inner join Subprocess sp on sp.id = z.subprocess")
List<ProcessDto> findProcessesAndSubprocesses();
}
我收到以下错误:
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap] to type [dto.ProcessSubprocess]
我不确定这是否是正确的方法。
一种肮脏的方法是查找所有进程,存储在一个对象中,然后迭代它们并查找所有子进程...
是否有其他方法可以从 de BBDD 获取所有内容并将其放入对象中?
最佳答案
从该 DTO 创建一个接口(interface),以便 Spring 引擎可以选择它并自动创建结果对象:
public interface ProcessDto {
Long getId();
String getCode();
String getName();
String getSubprocessName();
}
有关该主题的更多信息 here
关于java - 将三个表内连接到 java DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56427995/