2012-02-27 9 views
2

私は現在glassfish 2.1で動作しているアプリケーションをjboss 6.1で動作させようとしています。そして、次の問題がある、私はアプリケーションサーバーに関連するとは思っていないが、むしろポストグルや冬眠と関係すると思う。 Postgresqlの9.0以下のソフトウェアを使用してオペレータが存在しません:text = bigint

、とにかく、GlassFishの

上のJBossと3.2で問題を3.6.6を休止。

この名前付きクエリ:

@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フィールド)と関係があるような縫い目は誰にでもありますが、それを解決する理由や方法を理解できません。

ご提案は大歓迎です!

答えて

0

namesクエリパラメータはsearchDocumentですが、パラメータはsDocumentです。そして、実際のパラメータ値の変数の名前はsStringであり、数値型ではないことが示唆されています。代わりにlongまたはLong(またはint/Integer)のようなものを試してみてください。

+0

実際には、コードを匿名化しようとした私は、seachDocumentのsdocumentは、同じパラメータ:) Iでありますコードが唐辛子で数年間働いていたので構文上の誤りはないと考えています – linusno

0

ドライバはjava longをSQL textに変換できません(postgresはそのような愚かです)。

変数sStringのタイプは何ですか?私はそれがStringではなくlongであると思われますが、それはStringである必要があります。余談として

は、new Date(System.currentTimeMillis())ので文字列@Lobでアノテート万が一searchDocumentされ、あなたがdocument textが含まれている投稿だけnew Date()

+0

sStringはxmlドキュメントを文字列に変換したものです。実際に使用されるパラメータは、文字列、文字列、日付です。そして私が別のコメントで言ったように、それはglasfishで動作するので、それは構文的な誤りであるとは思わない。そのテーブル内の唯一のbigIntはidであり、このクエリでは触れられていません – linusno

+0

postgresがテキストに変換しようとしている* java *のような "bigint"また、あなたのエンティティクラスの '@ Id'フィールドが' String'として定義されているかもしれませんか? – Bohemian

関連する問題