2012-02-27 4 views
2

현재 glassfish 2.1에서 실행중인 응용 프로그램을 jboss 6.1에서 작동 시키려고합니다. 그리고 다음과 같은 문제가 있습니다. 응용 프로그램 서버와 관련이 없지만 포스트 그레스 및/또는 최대 절전 모드와 관련이 있다고 생각합니다. 다음 소프트웨어 PostgreSQL을 9.0을 사용하여운영자가 존재하지 않습니다 : text = bigint

, 어쨌든

글래스 피쉬

에 문제를 JBoss에서의 3.6.6 및 3.2을 최대 절전 모드.

이 명명 된 질의 :

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

이 코드 :

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

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 

테이블이 있습니다 :

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(); 

로그에서이 오류를 발생

누구나 '이드'(유일한 bigInt 필드)와 관련이있는 것처럼 솔기가 어떤 생각인지 알 수 있습니다. 그러나 문제를 해결하기 시작하는 이유와 방법을 알 수 없습니다.

모든 의견을 환영합니다!

답변

0

이름 쿼리 매개 변수는 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 * (예 :'long')의 "bigint"처럼 들립니다. 또한 엔티티 클래스의'@ Id' 필드가'String'으로 정의 될 수 있습니까? – Bohemian

관련 문제