如何解决如何在 JPA 查询语法中引用映射的超类字段?
@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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。