2012-06-04 2 views
0

JPA를 사용하는 날짜 필터가 없습니다.날짜 별 필터링 (시간 무시)

예를 들어 내 데이터베이스 테이블의 데이터가이 날짜 형식을 사용하는 것은이 내 법인이

public List<GeoLocation> getAll(Date date) { 

    javax.persistence.Query q = entityManager 
     .createQuery("SELECT g FROM GeoLocation g where g.criationDate = :data");  
    q.setParameter("data", date,TemporalType.DATE); 


    @SuppressWarnings("unchecked") 
    List<GeoLocation> result = q.getResultList(); 

    return result; 
} 

:

id=22001  2012-05-24 01:18:44.459000 -3.72562176  -38.55413138 
id=22002  2012-05-24 01:19:58.369000 -3.72556951  -38.55412081 
id=22003  2012-05-24 01:20:11.509000 -3.72554203  -38.5541338 
id=22004  2012-05-24 01:20:43.832000 -3.72556247  -38.55411875 
id=22005  2012-05-27 21:31:31.179000 -3.73500586  -38.5359234 
id=22006  2012-05-28 22:41:21.072000 -3.76651343  -38.49477246 
id=22007  2012-05-28 22:44:37.100000 -3.76582333  -38.49650576 
id=22008  2012-05-28 22:46:47.878000 -3.76732246  -38.49688336 
id=22009  2012-05-28 22:48:11.118000 -3.76437084  -38.50487202 
id=22010  2012-05-28 22:48:30.419000 -3.76383159  -38.50810391 
id=22011  2012-05-28 22:50:21.972000 -3.76130886  -38.50585614 
id=22012  2012-05-28 22:51:56.787000 -3.75217442  -38.50331619 
id=22013  2012-05-28 22:52:59.405000 -3.7531888 -38.50264043 
id=22014  2012-05-28 22:53:48.185000 -3.75311701  -38.50296631 
id=22015  2012-05-28 22:54:53.602000 -3.75311704  -38.5029654 

이 행을 필터링 내 코드입니다. 날짜 필드는이 공통 질의, 내가 열 번째 '에만 날짜 파티'를 추가하는 것입니다 사용하려는 접근 방식이 될 것입니다 가정하면 TemporalTime 주석

package br.com.drover.entity; 
import java.util.Date; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Temporal; 
import javax.persistence.TemporalType; 

@Entity 
public class GeoLocation { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long id; 

@Column(nullable=false) 
private Double latitude; 

@Column(nullable=false) 
private Double longitude; 

@Column(nullable=false) 
@Temporal(TemporalType.DATE) 
private Date creationDate; 


//..Some getters and setters 

}

+0

은 "g.criationDate"입니까? 'creationDate'를 원하셨습니까? – finnw

+0

예, 필드 이름은 criationDate입니다. – reuber

답변

1

이있는 시간 형식이 0 인 TemporalType.DATE 일 수 있습니다. 이를 통해 정확한 필터를 수행 할 수 있습니다. 그러면 데이터를 추가 할 때 여분의 인덱스 쓰기 쌍을 희생하여 데이터 저장소에서 좋은 쿼리 성능을 얻을 수 있습니다.

+0

주석을 추가했지만 작동하지 않았습니다. 코드가 행을 가져 오지 않았습니다. – reuber

+0

주석? 엔티티의 추가 필드를 의미합니까? 더 많은 코드를 보여주세요. –

+0

BigData에 내 객체를 삽입 할 때 주석을 넣을지라도 creationDate 형식은 YYYY-MM-DD HH : MM : SS 형식입니다. 이 whery는 아무것도 반환하지 않는다. :( – reuber