public class BlobStringType extends AbstractLobType
This is intended for the (arguably unnatural, but still common) case
where character data is stored in a binary LOB. This requires encoding
and decoding the characters within this UserType; see the javadoc of the
getCharacterEncoding()
method.
Can also be defined in generic Hibernate mappings, as DefaultLobCreator will work with most JDBC-compliant database drivers. In this case, the field type does not have to be BLOB: For databases like MySQL and MS SQL Server, any large enough binary type will work.
getCharacterEncoding()
,
LocalSessionFactoryBean.setLobHandler(org.springframework.jdbc.support.lob.LobHandler)
logger
Modifier | Constructor and Description |
---|---|
|
BlobStringType()
Constructor used by Hibernate: fetches config-time LobHandler and
config-time JTA TransactionManager from LocalSessionFactoryBean.
|
protected |
BlobStringType(LobHandler lobHandler,
TransactionManager jtaTransactionManager)
Constructor used for testing: takes an explicit LobHandler
and an explicit JTA TransactionManager (can be
null ). |
Modifier and Type | Method and Description |
---|---|
protected java.lang.String |
getCharacterEncoding()
Determine the character encoding to apply to the BLOB's bytes
to turn them into a String.
|
protected java.lang.Object |
nullSafeGetInternal(java.sql.ResultSet rs,
java.lang.String[] names,
java.lang.Object owner,
LobHandler lobHandler)
Template method to extract a value from the given result set.
|
protected void |
nullSafeSetInternal(java.sql.PreparedStatement ps,
int index,
java.lang.Object value,
LobCreator lobCreator)
Template method to set the given parameter value on the given statement.
|
java.lang.Class |
returnedClass() |
int[] |
sqlTypes() |
assemble, deepCopy, disassemble, equals, hashCode, isMutable, nullSafeGet, nullSafeSet, replace
public BlobStringType()
protected BlobStringType(LobHandler lobHandler, TransactionManager jtaTransactionManager)
null
).public int[] sqlTypes()
public java.lang.Class returnedClass()
protected java.lang.Object nullSafeGetInternal(java.sql.ResultSet rs, java.lang.String[] names, java.lang.Object owner, LobHandler lobHandler) throws java.sql.SQLException, java.io.UnsupportedEncodingException
AbstractLobType
nullSafeGetInternal
in class AbstractLobType
rs
- the ResultSet to extract fromnames
- the column namesowner
- the containing entitylobHandler
- the LobHandler to usejava.sql.SQLException
- if thrown by JDBC methodsjava.io.UnsupportedEncodingException
protected void nullSafeSetInternal(java.sql.PreparedStatement ps, int index, java.lang.Object value, LobCreator lobCreator) throws java.sql.SQLException, java.io.UnsupportedEncodingException
AbstractLobType
nullSafeSetInternal
in class AbstractLobType
ps
- the PreparedStatement to set onindex
- the statement parameter indexvalue
- the value to setlobCreator
- the LobCreator to usejava.sql.SQLException
- if thrown by JDBC methodsjava.io.UnsupportedEncodingException
protected java.lang.String getCharacterEncoding()
Default is null
, indicating to use the platform
default encoding. To be overridden in subclasses for a specific
encoding such as "ISO-8859-1" or "UTF-8".
null
to use the platform default encodingString.String(byte[], String)
,
String.getBytes(String)