package org.beanfuse.persist.hibernate; import org.apache.commons.lang.StringUtils; import org.hsqldb.Types; /** * 纠正了原有Hibernate对schema的使用错误 * * @author chaostone * */ public class HSQLDialect extends org.hibernate.dialect.HSQLDialect { public HSQLDialect() { super(); registerColumnType(Types.BOOLEAN, "bit"); } public String[] getCreateSequenceStrings(String sequenceName, int initialValue, int incrementSize) { return new String[] { "create table " + renameSequenceName(sequenceName) + " (zero integer)", "insert into " + renameSequenceName(sequenceName) + " values (0)", "create sequence " + sequenceName + " start with " + initialValue + " increment by " + incrementSize }; } public String[] getDropSequenceStrings(String sequenceName) { return new String[] { "drop table " + renameSequenceName(sequenceName) + " if exists", "drop sequence " + sequenceName }; } private static String renameSequenceName(String sequenceName) { if (sequenceName.indexOf('.') < 0) { return "dual_" + sequenceName; } else { return StringUtils.replace(sequenceName, ".", ".dual_"); } } }