Вызвано: java.lang.IllegalArgumentException: org.hibernate.QueryException: не удалось разрешить свойство: - PullRequest
0 голосов
/ 17 ноября 2018

В моем приложении для весенней загрузки я использовал объекты сущностей «Бренд» и «Семейство», которые имеют отношение «один ко многим».

 @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'.

Как сделатьЯ использую как 'private Brand brand', так и private Long brand_id в своем классе 'Family'?Или есть способ привязать brand_id к

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

1 Ответ

0 голосов
/ 17 ноября 2018

Вы должны пройти через объект, используя ссылку на объект, как показано ниже

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

При условии, что у вас есть нижеприведенное сопоставление для вашего бренда для сопоставления идентификаторов

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

В JPA мы запрашиваем объекты и используем переменную экземпляра (brandId) для ссылки с помощью. не сопоставленное имя столбца (brand_id)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...