我正在查询我的sql数据库。我有两个表:

表1:BusinessAccount

businessName (String);
businessAddress (String);
county (int); (county is the Foreign Key for countyId on table 2)


表2:县

countyId (int);
countyName (String);


我想返回县= 1的所有企业帐户的列表。我收到以下错误消息:


  您试图为以下类设置类型为java.lang.Integer的值
  参数CountyId与预期的类类型
  来自查询字符串的com.needABuilder.entities.County
  SELECT u FROM BusinessAccount u WHERE u.county=:CountyId


我不明白为什么在搜索BusinessAccount表中整数值county = 1的条目时为什么会出现此错误。这是我的代码。谢谢你的帮助。

public List<BusinessAccount> searchContractors() {
    factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
    EntityManager em = factory.createEntityManager();
    List<BusinessAccount> contractorList = new ArrayList<BusinessAccount>();

    em.getTransaction().begin();
    int countyId=1;
    Query myQuery = em.createQuery(
                    "SELECT u FROM BusinessAccount u WHERE u.county=:CountyId");
    myQuery.setParameter("CountyId", countyId);

    contractorList=myQuery.getResultList();
    em.getTransaction().commit();
    em.close();

    return contractorList;
}

最佳答案

消息说明了一切。 BusinessAccount.countyCounty类型。它不是Integer类型。您不能将CountyInteger进行比较。

您可以将一个县与另一个县进行比较,或将一个整数与另一个整数进行比较。因此,您想要的(假设County.idIntegerint类型)是

select u from BusinessAccount u where u.county.id = :countyId

10-04 12:00