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

时间:2018-11-17 16:48:30

标签: java hibernate spring-mvc spring-boot jpa

在我的spring-boot应用程序中,我使用了具有一对多关系的'Brand'和'Family'实体对象。

 @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,因为它不包含在“家庭”实体类中。

如何在我的“家庭”课程中同时使用“私人品牌品牌”和私人Long brand_id? 或者有没有办法将brand_id绑定到

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

1 个答案:

答案 0 :(得分:1)

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

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

假设您在ID映射上在品牌实体上具有以下映射

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

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