Hibernate插入到oracle DB,意外的令牌:VALUES

时间:2011-04-04 13:08:09

标签: hibernate oracle10g

我正在尝试在我的Oracle 10g数据库中创建一个插入查询。它一直给我这个错误:

ERROR PARSER:33 - 第1行:115:意外令牌:价值

这是我要插入的DAO方法

public void uploadFile(String createUser, Integer id, byte[] file, String name, String size, String mime) {

    Session session = getSessionFactory().openSession();
    try {
       Query up = session.createSQLQuery("INSERT INTO FILES(CREATE_DATE, CREATE_USER, FILE_DATA, FILE_ID, FILE_MIME, FILE_NAME, FILE_SIZE, ID) VALUES(SYSDATE, :createUser, :file, FILE_ID_SEQ.nextval, :mime, :name, :size, :id) ");

        up.setInteger("id", id);
        up.setBinary("file", file);
        up.setString("name", name);
        up.setString("size", size);
        up.setString("mime", mime);
        up.setString("createUser", createUser);

        up.executeUpdate();

    } catch(HibernateException e) {
        throw new HibernateException(e);
    } finally {
        session.close();
    }
}

2 个答案:

答案 0 :(得分:1)

仅支持INSERT INTO ... SELECT ...表单;不是INSERT INTO ... VALUES ...形式。

核心参考,第13章。

Ups,对不起,这是简单的sql,我什么都不说。

答案 1 :(得分:0)

检查列列表,你错过了大小:

FILES(CREATE_DATE, CREATE_USER, FILE_DATA, FILE_ID,             FILE_MIME, FILE_NAME, ID) 
VALUES(SYSDATE,    :createUser, :file,     FILE_ID_SEQ.nextval, :mime,     :name,     :size, :id)