内部连接三个表到Java DTO

时间:2019-06-03 13:03:13

标签: java postgresql spring-boot spring-data-jpa

我正面临以下问题... enter image description here

我正在尝试以这种方式同时拥有ProcessDTOprocess的{​​{1}}对象的java列表:

subprocess

这是我到目前为止所拥有的:

[{"process": {
   "code": "AB",
   "name": "Proc1"
   "subprocesses": 
    [{"code": "cd", "name": "subProc1"}],
    [{"code": "ef", "name": "subProc2"}],
    [{"code": "gh", "name": "subProc3"}]
  }
}]

但是当我创建DTO类时:

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;

查询:

public class ProcessDto {

    private Long id;
    private String code;
    private String name;
    private List<Subprocess> subprocess;

}

我收到以下错误:

  

org.springframework.core.convert.ConverterNotFoundException:否   发现能够从类型转换的转换器   [org.springframework.data.jpa.repository.query.AbstractJpaQuery $ TupleConverter $ TupleBackedMap]   键入[dto.ProcessSubprocess]

我不确定这是否正确。

一种肮脏的方法是执行findAll所有进程,存储在一个对象中,然后对其进行迭代并找到所有子进程...

还有其他方法可以将BBDD中的所有内容都带到一个对象中吗?

1 个答案:

答案 0 :(得分:3)

从该DTO创建一个接口,以便Spring引擎可以拾取它并自动创建结果对象:

public interface ProcessDto {

    Long getId();
    String getCode();
    String getName();
    String getSubprocessName();

}

有关here主题的更多信息