假设我们有一个包含10个变量的持久化Entity对象,例如,如果我做repository.read(id)
或repository.findById(id)
,我将获得一个带有存储库中设置的每个变量的Entity对象。 / p>
是否可以使用JPAQuery或EntityManager或其他任何可能的方式,在存储库上进行调用并返回Entity对象BUT,而无需获取特定变量?
我尝试了以下操作,但是它似乎什么也没做,仍然将Set包含在响应中:
JPAQuery<Fruit> query = new JPAQuery<>(entityManager);
QFruit fruit = QFruit.Fruit;
Set<Apple> apple = new HashSet<Apple>();
query.select(fruit).from(fruit).where(fruit.id.eq(fruitId))
.createQuery().getParameters().remove(apple);
return query.fetchOne();
答案 0 :(得分:1)
您可以使用任何自定义POJO来获取结果并指定所选内容。
https://docs.oracle.com/html/E13946_05/ejb3_langref.html#ejb3_langref_constructor
declare
c array_of_strings := new array_of_strings();
begin
c.extend();
c(c.count) := 'A';
c.extend();
c(c.count) := 'B';
for rec in (select * from dual where 'A' member of c ) loop
dbms_output.put_line('Option with memeber of ');
end loop;
for rec in (select * from dual where 'A' in (select * from table(c))) loop
dbms_output.put_line('Option with table');
end loop;
end;
其他方法是使任何特定的列都被延迟加载。您可以通过注释来做到这一点。
答案 1 :(得分:0)
最终,我试图从表的条目中读取特定的数据,因为特定的表具有太多的数据,这会扰乱性能,从而使整个实体仅包含1个或2个变量是不正确的。 最终帮助我的是塔普尔。 使用JPAQuery,您可以选择要从搜索中带回的特定变量。 例如
JPAQuery<MyObject > query = new JPAQuery<>(entityManager);
MyObject myObject = QMyObject.MyObject ;
Tuple response = query.select(myObject.id, myObject.version)
.where(myObject.id.eq("12345")).or(myObject.version.eq("12345")).fetchaAll();
然后,您可以轻松检索Tuple对象并将值作为数组处理。