2014-09-04 7 views
0

저는 Java 개발에 익숙하지 않으며 Java DAO 클래스에 쿼리를 작성하는 데 도움이 필요합니다. 내 DAO 클래스에서 몇 가지 테이블을 업데이트하는 업데이트 쿼리를 작성하고 싶습니다. 같은 뭔가 : 내가 MySQL의에서 그것을 실행하지만 난 내 DAO 클래스에서이 작업을 수행하려면 내가 배치에서 두 개의 쿼리를 작성해야하는 경우내 DAO 클래스의 한 트랜잭션에서 몇 가지 쿼리를 실행하는 방법? 하나의 쿼리를 만드는 것이 가능합니까?

UPDATE deals, vehicles SET deals.client= "client", 
vehicles.vehicleIdNumber="123456" 
WHERE deals.id ="123" and deals.id= vehicles.id; 

이 작동합니다. 문제는 내가 어떻게하는지 모른다. 필자가 이미 조사한 바에 따르면, JDBC, Spring, Hibernate를 사용하는 몇 가지 예제 만 찾을 수 있습니다. 그러나이 예제는 어플리케이션에서 사용하지 않습니다. 나는 하나의 테이블에 대한 업데이 트를 수행 할 때

나는 이런 일이 :

public void updateDeal(String dealNumber, Integer dealType) { 
     Query upQ = em.createQuery(
         "update Deals d set d.dealType = :dealType where d.dealNumber= :dealNumber") 
       .setParameter("dealType", dealType) 
       .setParameter("dealNumber", dealNumber); 
     upQ.executeUpdate(); 

나는 위의 유사 하나의 트랜잭션에서 두 개 이상의 테이블을 업데이트 할 수있는 방법을하지만, JDBC, 봄, 최대 절전 모드를 사용하지 않고 ...

Tnx!

업데이트 : 나는 JDBC를 사용하지 않고 의미했던 바를 잘 설명하지 않았다는 것을 깨달았다 ... 실수. 그래서 JDBC를 가지고 있는데, 내 DB와 연결되어 있으며, 단일 테이블 문으로 잘 작동합니다. 실제로이 작업을 수행하는 다른 방법이 있는지 알고 싶습니다. http://w3processing.com/index.php?subMenuId=146 이 예제에서는 먼저 작성 문을 작성하고 배치의 모든 쿼리를 추가하는 것보다 먼저 DB에 연결해야합니다. 하나의 테이블을 업데이트하기위한 쿼리를 생성하는 것은 꽤 간단합니다 (위의 코드 예제에서와 똑같습니다). 두 개 이상의 테이블을 업데이트 할 때이 작업을 수행하는 간단한 방법이 있는지 알고 싶습니다. 내 DB에 연결할 때마다 생성하고 싶지 않습니다.

내가 좋아하는 뭔가를 시도했다 :

public void updateDeal(Integer id, String client, 
      String vechicleNumber) 
Query query = em.createQuery("UPDATE Deals, Vehicles SET deal.client=:client, vehicle.vehicleNumber=:vechicleNumber WHERE deal.id =:id AND deal.id=vehicles.id "). 
       setParameter("client", client).setParameter("id", dealID). 
       setParameter("vechicleNumber ", vechicleNumber); 

을하고이 오류 얻을 : 그것을 하나의 트랜잭션을 만들기 위해

According to the error in the console, I have synatax error: 
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: , near line 1, column 35 
+0

'Query' 클래스에는 어떤 패키지가 있습니까? – talex

+0

그리고'em의 타입은 무엇입니까 – talex

+0

우선, DAO를 통해 동일한 SQL을 직접 사용할 수없는 이유가 없습니다. 둘째 - 이미 하이버 네이트 ('em' 형태로)와 확실히 JDBC를 사용하고있는 것 같습니다. 셋째, JDBC가 없다면 DB를위한 자체 네트워크 통신 시스템을 작성해야하기 때문에 DB에 어떤 기술을 사용하는지 알아 내거나 MySQL 저급 프로토콜 사양 시트를 구하십시오. – Ordous

답변

0

가능한 저장 프로 시저 또는 함수를 사용할 수 있는지를

+0

가능한 한 간단하게하고 싶습니다. 다른 쿼리에 대해 이미 사용한 것과 비슷합니다. 내 업데이트를 확인하십시오. – Jordan