jboss 操作符不存在:text = bigint

vuv7lop3  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(201)

我试图让我们的应用程序,目前正在运行在glassfish 2.1工作在jboss 6.1。并有以下问题,我不认为它与应用程序服务器,而是与postgres和/或休眠有关。
使用以下软件Postgresql 9.0,jboss上的hibernate 3.6.6和glassfish上的3.2
不管怎样,问题是。
此命名查询:

@NamedQuery(name="entry.updateDuplicate",
    query="UPDATE entry SET timestamp = :timestamp WHERE username = :username AND searchDocument = :searchDocument")

字符串
此代码:

Query query = em.createNamedQuery("Entry.updateDuplicate");
    query.setParameter("timestamp", new Date(System.currentTimeMillis()));
    query.setParameter("username", username);
    query.setParameter("sDocument", sString);

    int affected = query.executeUpdate();


在日志中生成此错误:

10:28:16,149 INFO  [STDOUT] Hibernate: update fu set c_timestamp=? where c_username=? and c_document=?
    10:28:16,165 WARN  [org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: 42883
    10:28:16,165 ERROR [org.hibernate.util.JDBCExceptionReporter] ERROR: operator does not exist: text = bigint
    Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
    Position: 77


表格是这样的:

TABLE fu
    (
    id bigint NOT NULL, document text, timestamp timestamp without time zone, username character varying(255), CONSTRAINT fu_pkey PRIMARY KEY (c_id)
    )


任何人都有任何想法,对我来说,它似乎与'id'(唯一的bigInt字段)有关,但我不知道为什么或如何开始解决它。
任何建议都是最受欢迎的!

q43xntqr

q43xntqr1#

您发布的表定义包含document text,那么searchDocument是否可能是一个用@Lob注解的String?在这种情况下,这可能是您在JBoss上使用的Hibernate版本的问题:
http://www.shredzone.de/cilla/page/299/string-lobs-on-postgresql-with-hibernate-36.html

xa9qqrwz

xa9qqrwz2#

驱动程序无法将java long转换为SQL text(postgres就是这样严格的)。
变量sString的类型是什么?我怀疑它是long,而不是String,但它必须是String
顺便说一句,new Date(System.currentTimeMillis())相当于new Date()

c7rzv4ha

c7rzv4ha3#

names查询参数是searchDocument,但是你设置了参数sDocument。实际的参数 variable 被命名为sString,这表明它不是一个数值类型。尝试类似longLong(或int/Integer)的东西代替。

相关问题