java - 由 : java. lang.IllegalArgumentException : org. hibernate.QueryException 引起:无法解析属性:

标签 java hibernate spring-mvc spring-boot jpa

在我的 spring-boot 应用程序中,我使用了具有一对多关系的“品牌”和“系列”实体对象。

 @Entity
@Table(name = "family")
public class Family extends UserDateAudit {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;

        @NotBlank
        @Size(max = 140)
        private String name;

        @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
        @ManyToOne
        @JoinColumn(name = "brand_id")
        private Brand brand;

我需要创建一个方法“findByBrandIdIn()”。所以我在我的存储库类中使用了以下代码。

@Query("SELECT a FROM Family a WHERE a.brand_id=:brandId")
    Page<Family> findByBrandIdIn(@Param("brandId") String brand_id, Pageable pageable);

但是,它不允许我添加brand_id,因为它不包含在“Family”实体类中。

如何在“家庭”类(class)中同时使用“私有(private)品牌”和私有(private)长品牌_id? 或者有没有办法将brand_id绑定(bind)到

@Query("SELECT a FROM Family a WHERE a.brand_id=:brandId")

最佳答案

您必须使用对象引用来遍历实体,如下所示

@Query("SELECT a FROM Family a WHERE a.brand.brandId=:brandId")

假设您的品牌实体上有以下用于 ID 映射的映射

@Id
@Column("brand_id")
private long brandId;

在 JPA 中,我们正在查询对象并使用实例变量 (brandId) 进行引用。不是映射的列名称 (brand_id)

关于java - 由 : java. lang.IllegalArgumentException : org. hibernate.QueryException 引起:无法解析属性:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53353353/

相关文章:

java - 如何集群 Ehcache 用作 Hibernate 的二级缓存

java - Spring Boot 错误 : java. lang.NoClassDefFoundError: org/springframework/util/Assert

java - 重新加载时发生 ClassCastException

java, generics - 如何参数化一个类型为 T 的类,这两个类型都是 : extends and implements sth

java - Hibernate查询计数查询,不知道怎么办

java - 如何在基于 Spring 注释的 java 配置中设置 Activity 配置文件

java - 了解@service 和竞争条件

java - 将字符串转换为 ArrayList<Character>,无需正则表达式

java - 创建具有 IDE 上下文行为的 Java 注解

java - 事务回滚异常