我无法使用以下查询从两个表中获取所有记录我已经尝试过了,但我只从一张桌子上得到结果。我想要两个表的结果,即 client_software_param_mapping 和 client_file_configuration 具有相同的 ClientId,这是从第三个 pojo(client_software_configuration) 到第一个和第二个 pojo 的外键。public Result showClientConfiguration() {EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("defaultPU"); EntityManager entityManager = entityManagerFactory.createEntityManager();Query q=entityManager. createQuery("SELECT c FROM client_software_param_mapping c JOIN fetch client_file_configuration f ON c.ClientId=f.ClientId"); List data =q.getResultList(); return ok(Json.toJson(data));}第一个pojo@Entitypublic class client_file_configuration { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String sourceFolder; private String sourceFile; private String processingFolder; private String processingFile; private String processedFolder; private int intervalInMin; private String readAfterDelay; private String parserClass; private String directoryMode; private String fileMode; private String actionMode; private String type; private String fileExpressionResolver; @OneToOne @JoinColumn(name = "ClientId") private client_software_configuration clientSoftwareConfiguration; public client_software_configuration getClientSoftwareConfiguration() { return clientSoftwareConfiguration; } public void setClientSoftwareConfiguration(client_software_configuration clientSoftwareConfiguration) { this.clientSoftwareConfiguration = clientSoftwareConfiguration; }}
1 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
这是正确的查询,因为它返回该 ClientId 处存在的第三个 pojo 的对象,因此它能够理解 ClientId 的类型。JPQL 从不使用表名和列名。它总是使用实体名称及其映射的字段/属性名称。所以在这里我采用了第三个 pojo 的对象,该对象具有 ClientId 字段。
从 client_file_configuration c,client_software_param_mapping p 中选择 c,p 其中 c.clientSoftwareConfiguration = p.clientSoftwareConfiguration
添加回答
举报
0/150
提交
取消