public List<Double> getAllCards(int a) {
EntityManager em = emFactory.createEntityManager();
Query query = em.createQuery("Select u.cardNumber from Creditcard u where u.userID= :id");
query.setParameter("id", a);
List<Double> result = query.getResultList();
em.close();
return result;
}
这是我获取所有用户信用卡的代码。 这是错误消息
java.lang.IllegalArgumentException:您试图为参数id设置类型类java的值,其中包含来自查询字符串的预期类型JPA.User从Creditcard u中选择u.cardNumber,其中u.userID = :ID
在我的数据库中,cardnumber存储为double,userid存储为int,所以我很困惑为什么程序告诉我需要发送jpa.user对象。
答案 0 :(得分:0)
使用EntityManager#createQuery
时,其中的String不是SQL而是JPQL。 userID
类中的CreditCard
映射元素的类型为User
(另一个类),而不是您期望的用户ID。
可能,您可能正在寻找的JPQL查询是:
Select u.cardNumber from Creditcard u where u.userID.id = :id
为了确定这可能是解决您问题的JPQL查询,我们需要查看CreditCard
和User
类的设计。