0

使用EntityManager方法與Hibernate。每當使用日期字段查詢時,我期望它能夠查找具有完整日期和時間的日期,但它只使用日期而不是時間。entityMananger無法使用Date參數

where cou0_.expiry_date>'22-Jan-16' 

彈簧配置

<bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="packagesToScan" value="com" /> 
     <property name="jpaVendorAdapter"> 
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /> 
     </property> 
     <property name="jpaProperties"> 
      <props> 
       <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
       <prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop> 
       <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_caches}</prop> 
       <prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop> 
       <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop> 
       <prop key="hibernate.use_sql_comments">${hibernate.use_sql_comments}</prop> 
      </props> 
     </property> 
    </bean> 

道具

hibernate.hbm2ddl.auto = update 
hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 
hibernate.c3p0.min_size = 5 
hibernate.c3p0.max_size = 10 
hibernate.c3p0.timeout = 300 
hibernate.c3p0.max_statements = 50 
hibernate.c3p0.idle_test_period = 3000 
hibernate.generate_statistics = true 
hibernate.show_sql=true 
hibernate.use_sql_comments=true 

柱聲明爲

@Temporal(TemporalType.TIMESTAMP) 
    @Column(name = "expiry_date") 
    private Date expiryDate; 

查詢代碼

Query query = getEntityManager().createQuery("from **** where c.expiryDate > :expiryDate"); 
     Date now = new Date(); 
     now.setHours(8); 
     System.out.println("Date--"+now); 
     query.setParameter("expiryDate", now,TemporalType.TIMESTAMP); 
     List<****> entity = query.getResultList(); 
+0

給出一個標記的原因-1 –

+0

你的查詢顯示「c.lastUpdated>:expiryDate」,但你的映射和我所假設的是SQL顯示「expiry_date」 – Chris

+0

感謝@Chris更新了我的問題。 –

回答

0

問題是不與實體管理器。我用間諜來跟蹤查詢。間諜有可配置的屬性以格式顯示日期。我沒有配置它,所以它想要使用默認格式,即dd-MMM-yyyy