SequenceStyleGenerator,如何使用前缀而不是后缀

阿纳斯本斯

我正在休眠中使用序列,我们对序列命名有一个命名约束,格式为SEQ_。我如何自定义/参数化SequenceStyleGenerator类,以便在序列名称中添加前缀?

阿纳斯本斯

最后,我创建了一个从SequenceStyleGenerator继承并覆盖defineSequenceName函数以具有前缀的类。

public class PrefixSequenceStyleGenerator extends SequenceStyleGenerator {
public static final String CONFIG_PREFER_PREFIX = "prefer_sequence_prefix";
public static final String CONFIG_SEQUENCE_PER_ENTITY_PREFIX = "sequence_per_entity_prefix";
public static final String DEF_SEQUENCE_PREFIX = "SEQ_";

@Override
protected String determineSequenceName(Properties params, Dialect dialect) {
    boolean usePrefix = ConfigurationHelper.getBoolean(CONFIG_PREFER_PREFIX, params, false);
    if(usePrefix){
        final String sequencePerEntityPrefix = ConfigurationHelper.getString( CONFIG_SEQUENCE_PER_ENTITY_PREFIX, params, DEF_SEQUENCE_PREFIX );
        String sequenceName = ConfigurationHelper.getBoolean( CONFIG_PREFER_SEQUENCE_PER_ENTITY, params, false ) ? sequencePerEntityPrefix + params.getProperty( JPA_ENTITY_NAME ) : DEF_SEQUENCE_NAME;
        final ObjectNameNormalizer normalizer = (ObjectNameNormalizer) params.get( IDENTIFIER_NORMALIZER );
        sequenceName = ConfigurationHelper.getString( SEQUENCE_PARAM, params, sequenceName );
        if ( sequenceName.indexOf( '.' ) < 0 ) {
            sequenceName = normalizer.normalizeIdentifierQuoting( sequenceName );
            final String schemaName = params.getProperty( SCHEMA );
            final String catalogName = params.getProperty( CATALOG );
            sequenceName = Table.qualify(
                    dialect.quote( catalogName ),
                    dialect.quote( schemaName ),
                    dialect.quote( sequenceName )
                    );
            }
        return sequenceName;
    }else{
        return super.determineSequenceName(params, dialect);
    }
}

}

我在我的超级班上用它:

@MappedSuperclass

公共类AbstractModelWithTableSequence实现AbstractModelInterface {

private static final long serialVersionUID = 6503670320979543539L;

@Id
@Column(name="id")
@GenericGenerator(name = "seq_generator", 
strategy = "com.gms.utils.PrefixSequenceStyleGenerator",
parameters = {
        @org.hibernate.annotations.Parameter(
                name = "optimizer", value = "pooled-lo"),
        @org.hibernate.annotations.Parameter(
                name = "initial_value", value = "1"),
        @org.hibernate.annotations.Parameter(
                name = "increment_size", value = "1"),
        @org.hibernate.annotations.Parameter(
                name = PrefixSequenceStyleGenerator.CONFIG_PREFER_SEQUENCE_PER_ENTITY, value = "true"),
        @org.hibernate.annotations.Parameter(
                name = PrefixSequenceStyleGenerator.CONFIG_SEQUENCE_PER_ENTITY_PREFIX, value = "SEQ_"),
        @org.hibernate.annotations.Parameter(
                name = PrefixSequenceStyleGenerator.CONFIG_PREFER_PREFIX, value = "true"),
    }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_generator")
private Long id;

@Override
public Long getId() {
    return id;
}

@Override
public void setId(Long id) {
    this.id = id;
}

@Override
public boolean isNew() {
    return getId() == null || getId() == 0;
}

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    AbstractModelWithTableSequence other = (AbstractModelWithTableSequence) obj;
    if (id == null) {
        if (other.id != null) {
            return false;
        }
    } else if (!id.equals(other.id)) {
        return false;
    }
    return true;
}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用数组时后缀/前缀如何工作

来自分类Dev

使用重整形将重复测量的列名称添加为前缀而不是后缀

来自分类常见问题

如何为每个列名添加后缀(或前缀)?

来自分类Dev

它如何获得相同的前缀和后缀?

来自分类Dev

使用批处理替换前缀和后缀

来自分类Dev

如何删除匹配模式的字符串中的前缀,后缀并使用sed分割字符?

来自分类Dev

如何使用批处理从前缀和随机后缀获取输入?

来自分类Dev

如何使用基于其ID后缀和前缀的jquery选择元素?

来自分类Dev

R中的前缀后缀和前缀后缀

来自分类Dev

如何添加现有列表的后缀(或前缀)元素?

来自分类Dev

如何在QLineEdit中放置静态文本(后缀,前缀)?

来自分类Dev

为什么/最长正确前缀/后缀算法如何工作?

来自分类Dev

如何在julia中为重复的列添加后缀或前缀?

来自分类Dev

如何处理CSS中的后缀和前缀

来自分类Dev

如何用唯一的前缀和后缀替换单词?

来自分类Dev

如何附加(带前缀和后缀)字符串

来自分类Dev

为什么同时使用前缀和后缀是非法的?

来自分类Dev

使用正则表达式捕获前缀和后缀

来自分类Dev

为什么同时使用前缀和后缀是非法的?

来自分类Dev

setNames后缀为前缀

来自分类Dev

for循环中的前缀与后缀

来自分类Dev

前缀和后缀增量

来自分类Dev

删除通用前缀或后缀

来自分类Dev

CMake库前缀/后缀

来自分类Dev

Excel前缀或后缀

来自分类Dev

前缀数等于后缀

来自分类Dev

如何使用JavaScript(不是jQuery)过滤字符串中的前缀和修饰词

来自分类Dev

如何使用库函数以pythonic方式在python中的两个字符串之间找到最长的公共后缀前缀?

来自分类Dev

前缀或后缀增量(或减量)的用法

Related 相关文章

热门标签

归档