HHH-4098 VARBINARY should be BLOB in DB2400Dialect
This commit is contained in:
parent
0fbf7202c0
commit
6a741706a3
|
@ -64,7 +64,8 @@ public class DB2Dialect extends Dialect {
|
||||||
registerColumnType( Types.DATE, "date" );
|
registerColumnType( Types.DATE, "date" );
|
||||||
registerColumnType( Types.TIME, "time" );
|
registerColumnType( Types.TIME, "time" );
|
||||||
registerColumnType( Types.TIMESTAMP, "timestamp" );
|
registerColumnType( Types.TIMESTAMP, "timestamp" );
|
||||||
registerColumnType( Types.VARBINARY, "varchar($l) for bit data" );
|
registerColumnType( Types.VARBINARY, "blob($l)" );
|
||||||
|
registerColumnType( Types.VARBINARY, 32766, "varchar($l) for bit data" );
|
||||||
registerColumnType( Types.NUMERIC, "numeric($p,$s)" );
|
registerColumnType( Types.NUMERIC, "numeric($p,$s)" );
|
||||||
registerColumnType( Types.BLOB, "blob($l)" );
|
registerColumnType( Types.BLOB, "blob($l)" );
|
||||||
registerColumnType( Types.CLOB, "clob($l)" );
|
registerColumnType( Types.CLOB, "clob($l)" );
|
||||||
|
|
|
@ -0,0 +1,122 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* JBoss, Home of Professional Open Source
|
||||||
|
* Copyright 2012 Red Hat Inc. and/or its affiliates and other contributors
|
||||||
|
* as indicated by the @authors tag. All rights reserved.
|
||||||
|
* See the copyright.txt in the distribution for a
|
||||||
|
* full listing of individual contributors.
|
||||||
|
*
|
||||||
|
* This copyrighted material is made available to anyone wishing to use,
|
||||||
|
* modify, copy, or redistribute it subject to the terms and conditions
|
||||||
|
* of the GNU Lesser General Public License, v. 2.1.
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT A
|
||||||
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License,
|
||||||
|
* v.2.1 along with this distribution; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
package org.hibernate.test.annotations.type;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
|
||||||
|
import org.hibernate.annotations.Type;
|
||||||
|
import org.hibernate.dialect.DB2Dialect;
|
||||||
|
import org.hibernate.mapping.Column;
|
||||||
|
import org.hibernate.testing.RequiresDialect;
|
||||||
|
import org.hibernate.testing.TestForIssue;
|
||||||
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Brett Meyer
|
||||||
|
*/
|
||||||
|
// TODO: May eventually test other dialects.
|
||||||
|
@RequiresDialect( DB2Dialect.class )
|
||||||
|
public class TypeCapacityTest extends BaseCoreFunctionalTestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dialects use different SQL types based on max capacities. Ensure
|
||||||
|
* DB2 VARBINARY uses varchar for < 32766 and blob for > 32766;
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@TestForIssue( jiraKey="HHH-4098" )
|
||||||
|
public void testVarbinaryCapacity() {
|
||||||
|
Column varbinary = getColumn( "varbinary" );
|
||||||
|
assertNotNull(varbinary);
|
||||||
|
assertEquals(varbinary.getSqlType(), "varchar(32765) for bit data");
|
||||||
|
|
||||||
|
Column varbinaryBlob = getColumn( "varbinaryBlob" );
|
||||||
|
assertNotNull(varbinaryBlob);
|
||||||
|
assertEquals(varbinaryBlob.getSqlType(), "blob(32767)");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private Column getColumn( String name) {
|
||||||
|
Iterator iter = configuration().createMappings().getTable(
|
||||||
|
null, null, "TypeCapacityTest$TypeCapacityEntity" )
|
||||||
|
.getColumnIterator();
|
||||||
|
|
||||||
|
while ( iter.hasNext() ) {
|
||||||
|
Column c = (Column) iter.next();
|
||||||
|
if (c.getName().equals( name )) {
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<?>[] getAnnotatedClasses() {
|
||||||
|
return new Class[] { TypeCapacityEntity.class };
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class TypeCapacityEntity {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Type( type="org.hibernate.type.BinaryType" )
|
||||||
|
@javax.persistence.Column( length = 32765)
|
||||||
|
private byte[] varbinary;
|
||||||
|
|
||||||
|
@Type( type="org.hibernate.type.BinaryType" )
|
||||||
|
@javax.persistence.Column( length = 32767)
|
||||||
|
private byte[] varbinaryBlob;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] getVarbinary() {
|
||||||
|
return varbinary;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVarbinary(byte[] varbinary) {
|
||||||
|
this.varbinary = varbinary;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] getVarbinaryBlob() {
|
||||||
|
return varbinaryBlob;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVarbinaryBlob(byte[] varbinaryBlob) {
|
||||||
|
this.varbinaryBlob = varbinaryBlob;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue