저는 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
'Query' 클래스에는 어떤 패키지가 있습니까? – talex
그리고'em의 타입은 무엇입니까 – talex
우선, DAO를 통해 동일한 SQL을 직접 사용할 수없는 이유가 없습니다. 둘째 - 이미 하이버 네이트 ('em' 형태로)와 확실히 JDBC를 사용하고있는 것 같습니다. 셋째, JDBC가 없다면 DB를위한 자체 네트워크 통신 시스템을 작성해야하기 때문에 DB에 어떤 기술을 사용하는지 알아 내거나 MySQL 저급 프로토콜 사양 시트를 구하십시오. – Ordous