cremor
unread,Oct 28, 2010, 11:36:00 AM10/28/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to nhusers
Doesn't NHibernate (3.0.0.Beta1) support deleting (or updating, which
results in delete and insert) composite-elements, that have Clob
properties, in sets with an Oracle DB?
(The same should be true for simply using Clobs in a where clause of a
query, but I didn't try this.)
I'm using the Oracle10g dialect with the ODAC 11.2.0.1.2 driver on a
11.2.0.1.0 DB.
The generated SQL is the following:
DELETE
FROM
WORKFLOWBEDINGUNGEN
WHERE
WOF_ID = :p0
AND BEDINGUNGSFELD = :p1
AND WERT1 = :p2
AND WERT2 = :p3
AND BEDINGUNG = :p4
AND WOF_CODE = :p5;
:p0 = 241 [Type: Int64 (0)], :p1 = 'Bedingung' [Type: String (0)], :p2
= 'Wert1' [Type: String (0)], :p3 = 'Wert2' [Type: String (0)], :p4 =
'EGAL' [Type: String (0)], :p5 = 1 [Type: Int32 (0)]
The columns WERT1 and WERT2 are Clobs.
The statement fails with the exception
"Oracle.DataAccess.Client.OracleException ORA-00932: inconsistent
datatypes: expected - got CLOB".
I seems like you can't compare Clobs in Oracle using the "=" operator,
this doesn't work in SqlPlus too. At least in plain SQL, Google
searching says it should work in PL/SQL.
Is this a limitation of NHibernate?
If yes, is it possible to extend NHibernate somewhere to fix this? For
example by using "dbms_lob.compare()" instead of "=" for comparison of
Clobs?