我有一个名为Test.java的实体,有70个字段,其中一些字段也与其他实体相关(通过连接一对多,多对一等等)。
我需要有一个这种类型的对象,但是我不需要所有字段只有3个字段,其中一个字段与其他实体有外键关系。
所以,我在执行查询jpa时编写了一个本机查询,执行其他查询也会导致花费很多时间来完成。
这是我的实体类:
public Class Test implements Serializable{
@Id
private int id;
@ManyToOne
@JoinColumn(name = "STATUSID")
private xxxxx xxxxx;
/// other fields, getters and setters
}
这是我的原生查询
public List<Order> getAllOpenOrders() {
final String query = "SELECT t.* from T_TEST";
Query createNativeQuery = em.createNativeQuery(query, Test.class);
List<Order> resultList = createNativeQuery.getResultList();
return resultList;
}
如何使用选定的字段获取Order实体对象,我不需要其他字段意味着我只使用这三个字段来实现我的功能。
如何停止执行其他查询?
谢谢。
答案 0 :(得分:1)
您只能使用Projections
选择所需的列。您不必为此寻求本地查询。
据我记得(我早就调试了),hibernate在执行本机查询之前会执行刷新。这导致在执行本机查询之前执行所有挂起的查询。在您遇到其他一些问题的情况下可能就是这种情况。
您可以使用Projections
,这是一种更简洁的方式来选择所需的列。