我有这些实体配置:

主表:

@Entity
@Table
public class Merchants {

    @Id
    private int id;

    @OneToMany(mappedBy = "merchants")
    private List<Contracts> contracts;
}

@Entity
@Table
public class Contracts {

    @Id
    private int id;

    @Column(length = 255)
    private String name;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "merchant_id")
    private Merchants merchants;
}


我使用此JPA查询:

String hql = "select e from " + Contracts.class.getName() + " e where e.merchant_id = ?";

        Query query = entityManager.createQuery(hql).setParameter(0, merchantId);


当我部署程序包时,存在表列merchant_id。
但是我在SQL查询期间遇到异常:

Caused by: org.hibernate.QueryException: could not resolve property: merchant_id of: org.rest.api.entity.Contracts [select e from org.rest.api.entity.Contracts e where e.merchant_id = ?]


您知道为什么没有映射mercer_id吗?

最佳答案

需要使用商家ID。

试试这个:

String hql = "select e from " + Contracts.class.getName() + " e where e.merchants.id = ?";

10-08 20:08