A type for persistent arrays.
| Method from org.hibernate.type.ArrayType Detail: |
public Iterator getElementsIterator(Object collection) {
return Arrays.asList( (Object[]) collection ).iterator();
}
Not defined for collections of primitive type |
public Class getReturnedClass() {
return arrayClass;
}
|
public boolean hasHolder(EntityMode entityMode) {
return true;
}
|
public Object indexOf(Object array,
Object element) {
int length = Array.getLength(array);
for ( int i=0; i< length; i++ ) {
//TODO: proxies!
if ( Array.get(array, i)==element ) return new Integer(i);
}
return null;
}
|
protected boolean initializeImmediately(EntityMode entityMode) {
return true;
}
|
public Object instantiate(int anticipatedSize) {
throw new UnsupportedOperationException();
}
|
public PersistentCollection instantiate(SessionImplementor session,
CollectionPersister persister,
Serializable key) throws HibernateException {
return new PersistentArrayHolder(session, persister);
}
|
public Object instantiateResult(Object original) {
return Array.newInstance( elementClass, Array.getLength(original) );
}
|
public boolean isArrayType() {
return true;
}
|
public Object replaceElements(Object original,
Object target,
Object owner,
Map copyCache,
SessionImplementor session) throws HibernateException {
int length = Array.getLength(original);
if ( length!=Array.getLength(target) ) {
//note: this affects the return value!
target=instantiateResult(original);
}
Type elemType = getElementType( session.getFactory() );
for ( int i=0; i< length; i++ ) {
Array.set( target, i, elemType.replace( Array.get(original, i), null, session, owner, copyCache ) );
}
return target;
}
|
public String toLoggableString(Object value,
SessionFactoryImplementor factory) throws HibernateException {
if ( value == null ) {
return "null";
}
int length = Array.getLength(value);
List list = new ArrayList(length);
Type elemType = getElementType(factory);
for ( int i=0; i< length; i++ ) {
list.add( elemType.toLoggableString( Array.get(value, i), factory ) );
}
return list.toString();
}
|
public PersistentCollection wrap(SessionImplementor session,
Object array) {
return new PersistentArrayHolder(session, array);
}
|