private int getColumnSpan(Type type, SessionFactoryImplementor sfi) { int columnSpan = type.getColumnSpan( sfi ); if ( columnSpan == 0 && type instanceof OneToOneType ) { columnSpan = ( (OneToOneType) type ).getIdentifierOrUniqueKeyType( sfi ).getColumnSpan( sfi ); } return columnSpan; }
@SuppressWarnings("rawtypes") public String extractColumnValues(){ StringBuffer sb = new StringBuffer(); //add the pk column and value sb.append(extractPrimaryKeyColumn() + " = " + extractPrimaryKeyValue() + " | "); //loop through all the other properties and get what you need for (String p: properties){ Property pr = pc.getProperty(p); //make sure that this is not a collection and not a one to one as these values are not part of the table if (!pr.getType().isCollectionType() && !(pr.getType() instanceof OneToOneType)) { //make sure that the values are persistent values and not a forumla value if (pr.isInsertable() || pr.isUpdateable()) { int scale = 2; //get the getter for the entity Getter getter = pr.getGetter(entity.getClass()); //get column value Object columnValue = getter.get(entity); //get column name for (Iterator it3 = pr.getColumnIterator(); it3.hasNext();) { Column column = (Column)it3.next(); sb.append(column.getName()); scale = column.getScale(); } sb.append(" = "); //check what kind of type of value this is, it if it an association then get the forign key value from the associated entity if (columnValue != null) { if (!pr.getType().isAssociationType()) { //if bigD set Scale if (columnValue instanceof BigDecimal) { columnValue = ((BigDecimal)columnValue).setScale(scale,BigDecimal.ROUND_HALF_DOWN); } else if (columnValue instanceof java.util.Date) { SimpleDateFormat sdf = null; if(columnValue instanceof java.sql.Timestamp){ sdf = new SimpleDateFormat(DATE_TIME_FORMAT); }else{ sdf = new SimpleDateFormat(DATE_FORMAT); } columnValue = sdf.format(columnValue); } else if (pr.getType().getName().equalsIgnoreCase("org.springframework.orm.hibernate3.support.ClobStringType")){ columnValue = "Clob Value"; } sb.append(columnValue); } else { //since it's an association we know that column value is an object String associatedEntityName = pr.getType().getName(); //associatedEntityName = ((EntityType)pr.getType()).getAssociatedEntityName (); PersistentClass localPC = extractPersistentClass(associatedEntityName); String fkValue = extractPrimaryKeyValue(localPC,columnValue); sb.append(fkValue); } } sb.append(" | "); } } } return sb.toString(); }