gpt4 book ai didi

java - 如何在jpa查询中传递参数?

转载 作者:行者123 更新时间:2023-12-02 13:06:04 33 4
gpt4 key购买 nike

我有两个实体,例如 SmsOutSmsIn。两个实体之间的关系包含 OneToMany,其中 smsIn.id主键smsOut.sms_in_id外键

现在我想在查询中传递 smsIn.mobileNumbersmsIn.smsText 等参数

SELECT so FROM SmsOut so order by id desc

以下是我的数据库图表:

enter image description here

已编辑

以下是我的代码:

String sql = "SELECT so FROM SmsOut so WHERE so.smsInId.mobileNumber =:mobileNumber AND so.smsInId.smsText =:smsText AND so.smsInId.shortCode =:shortCode between so.smsOutDate =:startDate and so.smsOutDate =:endDate order by id desc";
Query query = em.createQuery(sql);
query.setParameter("mobileNumber", mobileNumber);
query.setParameter("smsText", smsText);
query.setParameter("shortCode", shortCode);
query.setParameter("smsOutDate", startDate);
query.setParameter("smsOutDate", endDate);
smsOutList = query.getResultList();

异常(exception)是:

SEVERE: line 1:188: expecting "and", found '='
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: expecting "and", found '=' near line 1, column 188 [SELECT so FROM com.f1soft.SMSC.entities.SmsOut so WHERE so.smsInId.mobileNumber =:mobileNumber AND so.smsInId.smsText =:smsText AND so.smsInId.shortCode =:shortCode between so.smsOutDate =:startDate and so.smsOutDate =:endDate order by id desc]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:624)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)

请帮助我。谢谢

最佳答案

您还没有解释 SmsInSmsOut 之间的 JPA 关系,因此我假设 SmsOut 有一个 getSmsIn( )id 字段上的关系。

当你有一个EntityManager em时,你可以调用em.createQuery,这就像SQL prepare,然后setParameter :

TypedQuery<SmsOut> q = em.createQuery("SELECT so FROM SmsOut so WHERE so.smsIn.mobileNumber = :number ORDER BY id DESC");
q.setParameter("number", "12345678");
List<SmsOut> results = q.getResultList();

请参阅 the Javadoc for Query 了解指定参数的不同方式。

关于java - 如何在jpa查询中传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18172273/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com