我有一个Superclass Fruit和3个子类Apple,Pear和Banana。我有3个子类的3个Spring数据CrudRepositories。
Fruit是一个使用@Entity和@Inheritance注释的抽象超类(strategy = InheritanceType.TABLE_PER_CLASS)
我有一个FruitRepository,其中包含以下方法:
@Query(value=""
+ "(SELECT * FROM Apple where assignedTo_guid = :guid )"
+ "UNION"
+ "(SELECT * FROM Pear where assignedTo_guid = :guid )"
+ "UNION"
+ "(SELECT * FROM Banana where assignedTo_guid = :guid )", nativeQuery=true)
List<Fruit> getFruitEntitiesForMasterRef(@Param("guid") Long guid);
基本上我想查询所有的水果子类表,然后返回一个超类列表。目前,这会引发以下异常:java.sql.SQLException:Column&#39; clazz _&#39;没找到。
是否可以使用Spring Repositories或Hibernate执行此操作?
答案 0 :(得分:0)
为什么不让你休眠来为你做这个?我的意思是,如果您创建条件或HQL来检索Fruit
中的所有List<Fruit>
个对象,hibernate可以为您提供包含所有子类的列表。
然后,如果您想对水果列表的每个元素进行特殊处理,您可以使用访客模式。
我不会使用本机查询来执行此操作,hibernate知道如何管理这种情况。