2012-05-23 4 views
0

SQL 쿼리에서 java 하이버 네이트 코드를 생성 할 수있는 도구가 있습니까? (최대 절전 모드의 역순처럼 java 코드에서 선택 생성) 내 모든 쿼리를 최대 절전 모드로 전환하는 데 도움이됩니다!SQL 코드에서 java hibernate 코드 자동 생성

나는이 같은 매개 변수와 선택이 있다면 내 말은 :

select ta.id label, ta.nume value 
    from ar 
    left outer join ta ta on idp = ta.ID 
    where ta.status = 1 
    and (dp = 0 OR ps = idps_) 
    and status = 1 
order by ta.nume; 

이 같은 최종 뭔가를 얻기 :

DetachedCriteria criteria = DetachedCriteria.forEntityName("ar"); 
    criteria.createAlias("ta", "ta", Criteria.LEFT_JOIN); 
    criteria.add(Restrictions.eq("ta.status", 1)); 
    Criterion eq = Restrictions.eq("ps.id", idps_); 
    Criterion isZero = Restrictions.eq("dp.id", 0); 
    Criterion or = Restrictions.or(eq, isZero); 
    criteria.add(or); 
    criteria.add(Restrictions.eq("status", 1)); 
    ProjectionList projectionList = Projections.projectionList(); 
    projectionList.add(Projections.property("ta.id"), "value"); 
    projectionList.add(Projections.property("ta.nume"), "label"); 
    criteria.setProjection(Projections.distinct(projectionList)); 
    criteria.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); 
    criteria.addOrder(Order.asc("ta.nume")); 

또는 출력으로지도를 사용하여 비슷한 ...

테이블에 엔티티/bean의 매핑을 저장하는 경로를 도구에 제공합니다 (콩에 주석이 달린 경우 bean에 대한 경로)

+2

구문의 근접성을 고려할 때 SQL을 HQL로 변환하는 것이 훨씬 쉬울 것입니다. –

+0

나는 왜 그런 짓을할지 모르겠다. hibernate는 SQL로 다시 변환 할 것이다. 어쨌든 – Tom

+0

나는 HQL을 사용할 수있다. 그러나 가능한 한 객체 지향 접근법을 사용하는 것이 바람직하다 ... 그리고 jpa가 가장 좋은 방법으로 보인다 ... 그래서 ive는 jpa를 사용하고 싶다. 하지만 지금 메신저 hql에 묶여있는 것 같습니다 .... – MihaiS

답변

0

당신은 Hibernate와 작동 할 SQL과 유사한 dialect 인 HQL을 가지고있다. 엔티티의 필드 이름을 테이블의 필드 이름 대신 사용합니다. 그것은 조인 등을 지원합니다.

실제로 Criteria API는 조인을 매우 제한적으로 지원합니다 (최소한 내가 사용하려고 시도한 마지막 시간이었습니다). 그리고 Criteria API에서 HQL로 모든 것을 다시 작성하는 데 몇 시간이 걸렸습니다. , 이제는 Criteria API를 옵션으로 사용하지 않습니다.

HQL에서도 SELECT와 WHERE 부분에서 임베드 된 것과 사용자가 직접 작성한 SQL 함수를 모두 사용할 수 있습니다.

+0

예 "쉬운"솔루션이 될 것이지만 나는 가능한 객체 및 jpa를 사용하고 싶습니다. – MihaiS