アプリケーションをoracleからpostgresqlに移行します。そして、多くの質問が0をfalseとして使用しているため、問題が発生しています。そして今、私たちは多くのエラーを抱えています:
operator does not exist: integer = boolean
persistence.xmlの設定を使用して、postgresqlを0=falseと定義することが可能です???
PS私はJPAとしてglassfishv3とtoplinkを使用しています
アプリケーションをoracleからpostgresqlに移行します。そして、多くの質問が0をfalseとして使用しているため、問題が発生しています。そして今、私たちは多くのエラーを抱えています:
operator does not exist: integer = boolean
persistence.xmlの設定を使用して、postgresqlを0=falseと定義することが可能です???
PS私はJPAとしてglassfishv3とtoplinkを使用しています
問題は、Oracle には真の bool 型がなく、PostgreSQL にはあることです。結果として:
SELECT true = '1';
true の場合は「t」を返します
SELECT true = 1;
発生しているエラーを生成します。持続性を変更して、引用符で囲まれた (つまり不明な) タイプと比較できる場合、問題は解決します。
それができない場合は、カスタム オペレーターを作成できます。
CREATE OR REPLACE FUNCTION comp_bool(bool, int) RETURNS bool LANGUAGE SQL AS
$$
SELECT $1 = $2::bool;
$$;
CREATE OR REPLACE FUNCTION comp_bool(int, bool) RETURNS bool LANGUAGE SQL AS
$$
SELECT $1::bool = $2;
$$;
CREATE OPERATOR = (
procedure = comp_bool,
leftarg = bool,
rightarg = int,
commutator = =
);
CREATE OPERATOR = (
procedure = comp_bool,
leftarg = int,
rightarg = bool,
commutator = =
);
それで
SELECT true = 1;
作品.....