我正在查询我的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.county
是County
类型。它不是Integer
类型。您不能将County
与Integer
进行比较。
您可以将一个县与另一个县进行比较,或将一个整数与另一个整数进行比较。因此,您想要的(假设County.id
是Integer
或int
类型)是
select u from BusinessAccount u where u.county.id = :countyId