HQL将数据插入数据库

时间:2014-08-14 04:41:10

标签: hibernate hql

我正在尝试使用hql将数据插入数据库。 我的代码是

try {
         String hql = "insert into ErrorLog(className,method,lineNo,error) "
                       + "values(:cn,:me,:ln,:err)";

            Query query = session.createQuery(hql);
            query.setParameter("cn", className);
            query.setParameter("me", methodName);
            query.setParameter("ln", lineNo);
            query.setParameter("err", error);
            int res = query.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Not able to insert data");
        }

无法插入数据。

3 个答案:

答案 0 :(得分:2)

HQL并不突出地用于在表中插入值。为此,您需要使用Hibernate的save() , saveOrUpdate()方法。

HQL仅支持从另一个表插入。

他们有以下语法。

INSERT INTO EntityName properties_list select_statement.

他们没有任何东西可以仅仅输入价值观。所以以下语法无效

INSERT INTO EntityName properties_list values ( : inputvalues ).

您需要相应地更改方法。

答案 1 :(得分:0)

这是你用Hibernate插入记录的方法:

  1. ErrorLog必须是@Entity,而hibernate必须知道这个映射。
  2. 必须有@Id,可能是代理键主键
  3. 您映射所有字段

    • String className;
    • 字符串方法;
    • Long lineNo;
    • 字符串错误;
  4. 您创建一个新的ErrorLog实体,然后您可以调用:

    ErrorLog errorLog = new ErrorLog(); errorLog.setClassName(类名); ....

  5. 然后你需要告诉Hiberante你想要保留这个瞬态实体,所以你可以选择以下任何一个:
    • session.persist(错误日志);
    • session.save(错误日志);

答案 2 :(得分:-2)

使用由save()对象调用的persist()Session方法。并在这些方法中传递DTO类的对象;