jpa2.2.10 Query 使用entityManager构建sql查询,实体类和Dto中都有set<实体类>集合,不使用xml配置,写个有效的的示例
时间: 2023-06-10 18:03:38 浏览: 93
数据库操作Java实体类
5星 · 资源好评率100%
好的,您可以使用以下示例:
```java
public List<YourEntityDto> search(YourEntity entity) {
String queryStr = "SELECT NEW com.example.YourEntityDto(e.id, e.name, e.setEntity)"
+ " FROM YourEntity e WHERE e.field1 = :field1 AND e.field2 = :field2";
TypedQuery<YourEntityDto> query = entityManager.createQuery(queryStr, YourEntityDto.class)
.setParameter("field1", entity.getField1())
.setParameter("field2", entity.getField2());
return query.getResultList();
}
```
您需要将 YourEntityDto 替换为您自己的实体类或Dto类,并将 com.example 替换为您自己的包名。
在这个示例中,使用了 JPA 2.2.10 提供的 Named Query,使用实体类的构造函数在查询结果中构造 Dto 对象。注意我们在查询中直接使用了实体类中的集合属性 setEntity,无需对其进行额外配置。使用 TypedQuery 可以获得类型安全的查询结果,避免了需要进行额外的显式类型转换。
希望这个示例可以解决您的疑问,如还有其他问题,请随时与我交流。
阅读全文