In [1], I am seeing the following type mappings:
Column type: LONG -> java.sql.Types.LONGVARCHAR -> java.lang.String
Column type: LONGRAW -> java.sql.Types.LONGVARBINARY -> byte[]
org.hibernate.type.TextType is consistent with the mapping for LONG.
org.hibernate.type.ImageType is consistent with the mapping for LONGRAW.
From this standpoint, the current settings are appropriate.
I understand there are restrictions when LONG and LONGRAW are used and I see from your
other message that there is Oracle documentation for migrating to CLOB and BLOB.
I agree that changing column type registration as follows (for Oracle only) should fix
this:
registerColumnType( Types.VARBINARY, 2000, "raw($l)" );
registerColumnType( Types.VARBINARY, "blob" );
registerColumnType( Types.LONGVARCHAR, "clob" );
registerColumnType( Types.LONGVARBINARY, "blob" );
registerColumnType( Types.VARCHAR, 4000, "varchar2($l char)" );
registerColumnType( Types.VARCHAR, "clob" );
Steve, what do you think? Is it too late to make this change for 4.0.0?
[1] Table 11-1 of Oracle® Database JDBC Developer's Guide and Reference, 11g Release 1
(11.1) (
http://download.oracle.com/docs/cd/B28359_01/java.111/b31224/datacc.htm#g...)
[2] Hibernate Core Migration Guide for 3.5
(
http://community.jboss.org/wiki/HibernateCoreMigrationGuide35)
[3] Table 2-10 of Oracle® Database SQL Language Reference
11g Release 1 (11.1)
(
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/sql_elemen...)
----- Original Message -----
From: "Łukasz Antoniak" <lukasz.antoniak(a)gmail.com>
To: hibernate-dev(a)lists.jboss.org
Sent: Thursday, October 13, 2011 12:50:13 PM
Subject: [hibernate-dev] HHH-6726 LONG and LONG RAW column types in Oracle
Welcome Community!
I have just subscribed to the list and wanted to discuss HHH-6726
JIRA
issue.
Gail Badner wrote
(
http://lists.jboss.org/pipermail/hibernate-dev/2011-October/007208.html):
HHH-6726 (Oracle : map TextType to clob and ImageType to blob)
https://hibernate.onjira.com/browse/HHH-6726
There have been a number of issues opened since the change was made
to
map TextType (LONGVARCHAR) 'long' and ImageType (LONGVARBINARY) to
'long
raw'. This change was already documented in the migration notes.
Should
the mapping for Oracle (only) be changed back to clob and blob?
HHH-6726 is caused by an issue in Oracle JDBC driver (version
10.2.0.4
and later). This bug appears when LONG or LONG RAW columns are
accessed
not as first or last while processing SQL statement.
I have discussed the topic of mapping TextType to CLOB and ImageType
to
BLOB (only in Oracle dialect) with Strong Liu. Reasons for doing so:
- Oracle allows only one LONG / LONG RAW column per table. This might
be
the most important from Hibernate's perspective.
- LONG / LONG RAW - up to 2 GB, BLOB / CLOB - up to 4 GB.
- In PL/SQL using LOBs is more efficient (random access to data).
LONG
only sequential.
- LONG and LONG RAW are deprecated.
What is your opinion?
Regards,
Lukasz Antoniak
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev