2012-05-11 27 views
2

我在postgres的一個表具有以下結構ERROR:操作者不存在:字符改變= BYTEA

CREATE TABLE rpaul."HK_LOGIN_DETAILS" 
(
    "HK_LOGIN_DETAILS_ID" bigint NOT NULL, 
    "HK_LOGIN_DETAILS_USERNAME" character varying(10) NOT NULL, 
    "HK_LOGIN_DETAILS_PASSWORD" character varying(50) NOT NULL, 
    CONSTRAINT "HK_LOGIN_DETAILS_PK" PRIMARY KEY ("HK_LOGIN_DETAILS_ID"), 
    CONSTRAINT "HK_LOGIN_DETAILS_UK" UNIQUE ("HK_LOGIN_DETAILS_USERNAME") 
) 

及以下

<hibernate-mapping package="net.rpaul.projects.homekeeping.domain.login"> 
    <class name="LoginDetails" table="`HK_LOGIN_DETAILS`"> 
     <id name="id" column="`HK_LOGIN_DETAILS_ID`" type="long"> 
      <generator class="assigned" /> 
     </id> 
     <property name="userName" type="string" column="`HK_LOGIN_DETAILS_USERNAME`" not-null="true" /> 
     <property name="password" type="string" column="`HK_LOGIN_DETAILS_PASSWORD`" not-null="true" /> 
    </class> 
</hibernate-mapping> 

在被提到冬眠映射該表LoginDetails.java,我已經聲明id字段爲long,userName和password字段爲String。不過當我嘗試執行以下

List list = getHibernateTemplate().find("from LoginDetails ld where ld.userName = ?", userName); 

我得到

ERROR: operator does not exist: character varying = bytea

我沒有得到什麼地方出了錯。任何幫助,將不勝感激。

回答

11

我認爲你應該檢查你的變量「userName」是否爲空。在這種情況下,我經歷了這個信息。

+0

在我的情況下,它可以爲空。如果是這種情況該怎麼辦? – Erlan

+0

預先檢查null,無論您使用變量進行查詢 – comiventor

1

看來,Hibernate出於某種原因發送類型參數爲bytea(或者更確切地說,可能是java.sql.Types.BLOB),而不是讓服務器將其推斷或設置爲文本(java。 sql.Types.STRING)。 這裏是解決方案的類似問題JPA lower() function on parameter

相關問題