假设我有一个Foo
实体(字段:id
、name
和barId
)和Bar
实体(字段:id
,age
),以一对多的关系。我想选择所有的Foo
,并附加相应的条形图age
。
我看到两个选项,但似乎都不起作用:
1.所谓closed projection approach
@Query("select f as foo, b.age as age from Foo f inner join Bar b on f.barId = b.id")
List<FooWithAge> query1();
其中,FooWithAge是具有作为方法的Foo getFoo()
和Integer getAge()
的接口;
1.所谓class projection approach
@Query("select new FooWithAge(new Foo(f), b.age) from Foo f inner join Bar b on f.barId = b.id")
List<FooWithAge> query2();
其中,FooWithAge是一个类,具有字段Foo foo
和Integer age
以及一个 * 构造函数,该构造函数将这两个字段作为参数。*
这些解决方案似乎都不起作用。第三个解决方案是将Foo的所有字段作为FooWithAge的构造函数的参数,但我希望找到一个更干净的解决方案。
注意:我只能使用vanilla SpringDataJPA查询,原生查询除外。
1条答案
按热度按时间zbsbpyhn1#
1.对于foo对象,您必须定义一个子接口:
1.在第一个参数中,您将在foo中创建一个foo,因此基本上只需传递
f
: