2011-08-04 7 views
1
내가 가진

.... 내가 날짜 부분보다는 열심히 코딩을 설정하는 방법자바 지속성 날짜 쿼리

string qString = "select e from table where id= :id and trunc(Date) = TO_Date('03/04/2010','MM/DD/YYYY') 

Query newQuery = entityManager.createNamedQuery(qstring) 
newQuery.setParameter("id",id); 

?

시도해 보았습니다. newQuery.setParameter("date",date,TemporalType.Date)하지만 제대로 작동하지 않았습니다. 어떤 포인터? 는 또한, '("날짜"날짜) newQuery.setParameter'단지를 사용하려고하고 나를 끝나는 인수로 날짜를 사용 ...

string qString = "select e from table where id= :id and trunc(Date) = :date 

,하지만 나는 그들이 올바르게 포맷되지 않습니다 믿는다 이 작업을 수행하는 올바른 방법은 무엇입니까?

* 업데이트 *** SQL 날짜와 함께 처리하려고합니다. 윌 계속 게시됩니다!

+0

'? 1'과 같은 숫자 와일드 카드를 사용해 보셨나요? – Jeremy

+0

숫자 와일드 카드 란 무엇입니까? 나는 그것을 듣지 못했다. – Kevin

+0

'em.createQuery ("from table where id =? 1"). setParameter (1, id)' – Jeremy

답변

1

검색어를 저장하는 것과 마찬가지로 문자열에 저장하는 것이 잘못되었습니다.

String date = '03/04/2010'; 
String dateFormat = 'MM/DD/YYYY'; 

String qString = "SELECT e FROM table WHERE id = :id 
AND trunc(DATE) = TO_Date(date,dateFormat)"; 
+0

맞습니다. 작동하지만, 더 나은 방법이 있다고 생각합니다. 좋은 습관으로하면 더 배우게됩니다. 그런 식으로 할 수는 있지만, 그다지 좋지는 않습니다. – Kevin

+0

값을 변경하는 것보다 더 좋은 방법이라고 생각합니다. 값을 변경하려면 파일 상단에서 값을 변경해야합니다. 참조 된 모든 장소가 변경되었습니다. –

+0

하드 코딩 된 값을 전달하는 것보다 더 나은 방법이라고 동의하지만, 문자열을 전달하는 대신 매개 변수를 설정하여 일반 날짜를 전달하는 것이 좋습니다. 당신은 지속 가능성을 다루는 것이 더 실현 가능할 것이라는 데 동의하지 않습니까? – Kevin