0

我是 Java 开发新手,在我的 Java DAO 类中编写一批查询时需要一些帮助。在我的 DAO 类中,我想编写一个更新查询来更新几个表。就像是:

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

如果我在 MySQL 中执行它,这将起作用,但如果我想在我的 DAO 类中执行此操作,我必须批量编写两个查询。问题是我不知道该怎么做。根据我已经研究过的内容,我只能找到一些使用 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、Spring、Hibernate...

天呐!

更新:我意识到我没有很好地解释我不使用 JDBC 的意思......我的错误。所以我有 JDBC,我与我的数据库有连接,并且它与单个表语句一起工作正常。我实际上想知道是否有其他方法可以做到这一点,而不是像: http ://w3processing.com/index.php?subMenuId=146 在这个例子中,你必须首先连接到数据库,而不是创建语句和而不是添加批处理中的所有查询。当我创建用于更新一个表的查询时非常简单(这与我在上面的代码示例中显示的完全一样)。我想知道是否有一些更简单的方法可以更新多个表。我不想每次都创建与我的数据库的连接。

我试过类似的东西:

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 
4

1 回答 1

1

如果可能,您可以使用存储过程或函数使其成为一个事务

于 2014-09-04T09:55:36.007 回答