Java 具有映射属性的实体的Hibernate查询

Java 具有映射属性的实体的Hibernate查询,java,hibernate,Java,Hibernate,我一直在hibernate中处理一个查询来更新实体的状态。这种名为PaymentRequestLink的实体与另一个名为extraparameters的实体存在一对多关系 PaymentRequestType.java: @Entity @Table(name="payment_link") public class PaymentRequestLink { private Map<String, ExtraParameter<E>> extraParamet

我一直在hibernate中处理一个查询来更新实体的状态。这种名为PaymentRequestLink的实体与另一个名为extraparameters的实体存在一对多关系

PaymentRequestType.java:

@Entity
@Table(name="payment_link")
public class PaymentRequestLink {

     private Map<String, ExtraParameter<E>> extraParameters;

     @Fetch(FetchMode.SELECT)
     @ElementCollection(fetch=FetchType.EAGER)
     @CollectionTable(name="extraparameter_payment_link", 
       schema=BaseEntity.DATABASE_SCHEMA, joinColumns=@JoinColumn(name="extraparameter_payment_link_id"))
     @MapKeyColumn(name = "name", length=64, nullable = false)
     public Map<String, ExtraParameter<String>> getExtraParameters() {
           return extraParameters;
      }
我要进行的查询是,当存储在extraparameters中的过期日期是当前日期之前的日期时,将PaymentRequestLink的状态更新为EXPIRED。 这是我现在的疑问:

    String stateSentence = "AND state <> '";
    String sqlUpdateLinkDetailed =  "UPDATE PaymentRequestLink ld SET state='EXPIRED' " +
            "WHERE extraParameters.EXPIRATION_DATE.value <= ? " +
            stateSentence + PaymentRequestLinkState.PAID;

    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MINUTE, 1);
    Timestamp now = new Timestamp(calendar.getTimeInMillis());

    hibernateTemplate.bulkUpdate(sqlUpdateLinkDetailed, now);
String stateservice=“AND state'”;
字符串sqlupdatelinekdetailed=“UPDATE PaymentRequestLink ld SET state='EXPIRED'”+
“其中extraParameters.EXPIRATION\u DATE.value
索引集合的元素(数组、列表和映射)可以是
仅在where条款中通过索引引用:

String stateservice=“AND state'”;
字符串sqlupdatelinekdetailed=“UPDATE PaymentRequestLink ld SET state='EXPIRED'”+

“extraParameters['EXPIRATION_DATE']的位置。值可以显示整个ExtraParameter类吗?您的问题是否得到了回答?”?如果没有,请提供反馈以增强答案。
extraparameter_payment_link_id  extra_type           extra_value          name
    1                           java.sql.Date        2019-01-01           EXPIRATION_DATE
    String stateSentence = "AND state <> '";
    String sqlUpdateLinkDetailed =  "UPDATE PaymentRequestLink ld SET state='EXPIRED' " +
            "WHERE extraParameters.EXPIRATION_DATE.value <= ? " +
            stateSentence + PaymentRequestLinkState.PAID;

    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MINUTE, 1);
    Timestamp now = new Timestamp(calendar.getTimeInMillis());

    hibernateTemplate.bulkUpdate(sqlUpdateLinkDetailed, now);
 error processing job
 org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: EXPIRATION_DATE of: component[type,value] [UPDATE 
 com.some.company.PaymentRequestLink ld SET state='EXPIRED' WHERE extraParameters.EXPIRATION_DATE.value <= ? AND state <> 'PAID']; nested exception is org.hibernate.QueryException: could not resolve property: EXPIRATION_DATE of: component[type,value] [UPDATE com.some.company.PaymentRequestLink ld SET state='EXPIRED' WHERE extraParameters.EXPIRATION_DATE.value <= ? AND state <> 'PAID']
String stateSentence = "AND state <> '";
String sqlUpdateLinkDetailed =  "UPDATE PaymentRequestLink ld SET state='EXPIRED' " +
            "WHERE extraParameters['EXPIRATION_DATE'].value <= ? " +
            stateSentence + PaymentRequestLinkState.PAID;