问题描述
@EqualsAndHashCode(callSuper = true)
@Entity(name = "Supported_cars_usage")
@Data
@NoArgsConstructor
public class SupportedCarUsage extends SupportedUsageBase {
@ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.ALL)
@JoinColumn(name = "supported_car_id")
private SupportedCar supportedCar;
}
@MappedSuperclass
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class SupportedUsageBase extends BaseEntity {
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
User user;
boolean allowed;
}
我正在尝试选择、搜索和分组某个嵌套字段。一开始我发现我完全可以引用嵌套字段。
我尝试过类似的变体
Query query = em.createquery("select supportedCar,allowed from Supported_cars_usage");
Query query = em.createquery("select supportedCar,super.allowed from Supported_cars_usage");
Query query = em.createquery("select supportedCar,SupportedUsageBase.allowed from Supported_cars_usage");
但因各种错误而失败。这些是引用映射超类中的字段的一些语法吗?
数据库本身正常创建。
Getter 存在并使用 Lombok
自动创建(参见 @Data
注释)。
我不想使用原生查询。
解决方法
你可以这样写:
List<Object[]> result = em.createQuery("select s.supportedCar,s.allowed from Supported_cars_usage s").getResultList();