【问题标题】:How do I get JSON data from two tables using joins in Hibernate?如何使用 Hibernate 中的连接从两个表中获取 JSON 数据?
【发布时间】:2017-06-19 04:50:40
【问题描述】:

select a.empname,b.dname from employee a, department b where a.deptid=b.deptid

Employee 表包含empid,empname & deptid

部门表包含deptid & dname

【问题讨论】:

标签: java json hibernate


【解决方案1】:

hql 连接有一些变化。 对于 hql 连接,我们使用表的类 如果您有 Employee 和 Department 类。 您可以使用类似的查询

select a.empname,b.dname from Employee as a left outer join Employee.department as b

其中empname、dname和department是Employee、Department和Employee类的字段。

以上查询将返回您必须正确处理的列表。 然后将此列表转换为 json 对象

【讨论】:

    【解决方案2】:

    我希望这会有所帮助。您需要一个 DTO 来存储数据并将其作为 JSON 发送到前端。

    @Query("new com.example.service.model.search.SearchDTO" 
                +"(e.empname, d.dname) "
                + "from department d "
                + "join d.deptid e "
                + "where e.id=?1")
        public List<SearchDTO> findByIdEmployee (Long idEmployee );
    

    可能的 DTO 结构:

    public class SearchDTO {
    
        String EnpName;
        String DepName;
    
        public SearchDTO(String EnpName, String DepName) {
            this.EnpName = EnpName;
            this.DepName = DepName;
        }
    
        public String getEnpName() {
            return EnpName;
        }
    
        public void setEnpName(String EnpName) {
            this.EnpName = EnpName;
        }
    
        public String getDepName() {
            return DepName;
        }
    
        public void setDepName(String DepName) {
            this.DepName = DepName;
        }
    
    }
    

    【讨论】:

      【解决方案3】:

      三种方法,

      1. HQL
      2. 一对一映射。
      3. 使用休眠的本机查询。

      最佳使用:一对一映射。

      参考:https://github.com/Roshanmutha/hibernate-samples/blob/master/R6_One_To_One_Mapping/src/main/java/entity/User.java

      【讨论】:

        猜你喜欢
        • 2021-08-10
        • 2013-03-07
        • 2015-12-09
        • 2021-12-11
        • 2013-05-17
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多