我有主表和明细表
1-主-Employee(ID INT PRIMARY KEY,名字VARCHAR2,ADDRESS_ID INT外键)
2-详情 - 地址(ID INT主键,块VARCHAR2,建筑VARCHAR2,面积VARCHAR2)
JPA如何让某些字段不是所有的字段
我使用JPA获取对象,我想某些领域不是全部,我想 (Employee.id,Employee.name,Address.area) 只有
所以我怎么能没有得到所有的领域呢?
谢谢。
我有主表和明细表
1-主-Employee(ID INT PRIMARY KEY,名字VARCHAR2,ADDRESS_ID INT外键)
2-详情 - 地址(ID INT主键,块VARCHAR2,建筑VARCHAR2,面积VARCHAR2)
JPA如何让某些字段不是所有的字段
我使用JPA获取对象,我想某些领域不是全部,我想 (Employee.id,Employee.name,Address.area) 只有
所以我怎么能没有得到所有的领域呢?
谢谢。
你确实,通过使用查询:
select e.id, e.name, a.area from Employee e left join e.address a where ...
这样的查询将返回一个List<Object[]>
,其中每个对象数组包含三个选定的元素。
但是,通过只选择那些字段,您可能不会获得任何收益,因为执行数据库查询时通常会花费的是查找数据以检索和执行表之间的联接。你最好继续使用您的实体,并使用下面的查询,而不是,它会返回员工的情况下,与已加载它们的地址:
select e from Employee e left join fetch e.address where ...
这将返回一个List<Employee>
。
我知道这有点晚了,但仍然想回答以防万一有人可能会遇到这个问题:你有没有考虑尝试像懒惰和渴望的提取类型?有了这些,你可能会得到直接标记为“渴望”的所有字段,“懒”字段被提取
如果这两个表之间没有任何关系,那么如果使用'createQuery'或'namedQuery',我认为你需要得到两个物体。或者你也可以使用'nativeQuery' – Yubaraj
有一个关系,但是当我得到对象时,我得到所有的字段:( – Hazim
是的,如果你返回对象,那么你会得到所有的字段。所以最好的方法是使用'nativeQuery' – Yubaraj