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

2024-01-03

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


最后,我创建了一个继承自 SequenceStyleGenerator 的类,并重写确定SequenceName 函数以获得前缀。

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;
}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SequenceStyleGenerator,如何使用前缀而不是后缀 的相关文章

  • 在 Spring Context 中创建 JPA EntityMananger 时出现问题

    我有一个 JPA Spring 应用程序 它使用 Hibernate 作为 JPA 提供程序 在代码的一部分中 我必须使用 new 运算符在应用程序中手动创建 DAO 而不是使用 Spring DI 当我这样做时 Spring 不会处理 P
  • HQL 中的日期比较(不带时间戳)

    我必须比较 hibernate hql 查询中的两个日期 我在 java bean 中使用 java util Date 并在 mysql 数据库中使用时间戳作为数据类型 select t from Task t where t modif
  • Spring Data JPA 和 Exists 查询

    我正在使用 Spring Data JPA 使用 Hibernate 作为我的 JPA 提供程序 并想要定义一个exists附加 HQL 查询的方法 public interface MyEntityRepository extends C
  • Hibernate UserType 和定义的长度

    我有一个休眠用户类型 如下所示 public class UUIDHibernateType implements UserType private static final int SQL TYPES new int Types CHAR
  • 使用 Hibernate Criteria API 返回每组的第一行

    我是 Hibernate 新手 我正在尝试编写一个条件查询来返回给定日期员工的最新状态 id Status status date 1 Active 1 10 2017 2 Active 1 10 2017 1 Inactive 5 10
  • Wicket+Spring+JPA+Hibernate:未找到持久性单元

    我正在使用 Wicket Spring JPA Hibernate 开发一个 Web 应用程序 这是我使用此设置的第一个项目 我想我可能犯了一些错误 我收到以下错误 找不到名为 ApplicationEntityManager 的持久性单元
  • 使用 JMX 运行 Hibernate 4.3(无 spring)

    我正在使用 Hibernate 4 3 和 Guice 1 0 运行 java webapp wicket 6 13 我正在尝试配置 Hibernate 以便可以通过 JMX 框架访问运行时信息 I m not使用 spring 任何人都可
  • Hibernate添加带有子实体id的实体

    我的对象 状态 java Entity Table name STATE public class State Id GeneratedValue strategy GenerationType AUTO private Long id C
  • hibernate 如何确保二级缓存使用数据库中的最新数据进行更新

    我读到 使用 hibernate 的二级缓存 它可以通过减少数据 对象检索的数据库命中来提高应用程序性能 但是hibernate是如何保证二级缓存与数据库中的数据是最新的呢 例如 假设下面的类是实体并持久化到数据库中 Entity clas
  • Hibernate 乐观锁..它是如何工作的?

    我正在阅读下面关于休眠乐观锁定的博客 我打算将它与休眠一起使用 但是 我有一个担忧 我们有java代码和c 代码 都连接到一个数据库 虽然java代码可以使用hibernate来实现乐观锁定 但我想让c 代码做同样的事情 此外 C 代码正在
  • 项目“MyProject”具有比运行 Eclipse 更高的编译器选项

    我正在尝试重建 Hibernate 配置 但我得到了Wrong Compiler Settings错误 请在下面找到我的应用程序配置和错误的屏幕截图 问题是因为 Eclipse 运行在与我的项目中指定的不同的 JVM 上 我的机器上安装了两
  • Hibernate 可以使用 MySQL 的“ON DUPLICATE KEY UPDATE”语法吗?

    MySQL 支持 INSERT ON DUPLICATE KEY UPDATE 语法允许您 盲目 插入数据库 并回退到更新现有记录 如果存在 当您想要快速事务隔离并且想要更新的值取决于数据库中已有的值时 这非常有用 作为一个人为的示例 假设
  • 在 Intellij 中找不到 /hibernate.cfg.xml

    现在 我正在使用 IntelliJ 学习 Hibernate 因此 我创建了一个 Maven 项目并创建了一个 Hibernate 程序 但后来我遇到了像此图中所示的错误 然后我就在网上寻找解决方案 但我找不到任何正确的解决方案 If yo
  • Spring Data JPA 的 @PersistenceConstructor 注释是否与 Hibernate 结合使用?

    我希望 Hibernate 使用另一个构造函数而不是空构造函数 因为我有一些逻辑应该在对象创建时执行 但取决于对象属性 我读了here https stackoverflow com questions 18099127 java enti
  • 如何在 Hibernate 中自动递增复合主键中的 Id?

    我有一个带有复合主键的表 groupId and batchId 实体类看起来像 Entity name EMPLOYEE public class Employee EmbeddedId private EmployeePK employ
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 在 JUnit 中使用 Spring 测试服务时如何回滚数据库事务?

    我测试我的 DAO 和服务没有问题 但是当我测试时INSERTs or UPDATE我想回滚事务而不影响我的数据库 我在用着 Transactional在我的服务中管理交易 我想知道 是否有可能知道事务是否正常 但回滚它以防止更改数据库 这
  • hibernate外键问题:执行DDL“alter table...”时出错

    我有一个非常简单的对象结构 它给了我一个我无法解决的错误 已经做了很多搜索 我认为这一定是一个非常常见的用例 所以不确定问题是什么 我有这三个课程 Entity public class Widget Id GeneratedValue s
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean

随机推荐

  • 在 JavaScript 中缩放到没有画布的光标

    我有一个 img 通过调整鼠标滚轮滚动来缩放transform scale 我希望缩放像 Google 地图一样 您可以缩放到鼠标光标所在的位置 而不是图像的中心 不过 我不想使用画布 只是为了学习体验 这也是我发现的其他问题并没有真正帮助
  • WSO2 Identity Server Service Pack 的来源

    WSO2 Identity Server 5 0 0 的 Service Pack 1 的源是否公开可用 我在哪里可以找到 SVN 存储库中的源代码 Service Pack 没有任何源代码 服务包是通过聚合为 WSO2 中的产品提供的补丁
  • Rails 中的 Kerberos 身份验证

    是否可以使用 kerberos 对 Rails 下的用户进行身份验证 是否有任何现有插件 最好是扩展 authlogic 的功能 来执行此操作 我希望其他人能够向我们展示一种纯粹的 Rails 方法来做到这一点 但在那之前 让事情顺利进行的
  • 开发cocos-lua游戏时,Android中string.find中文字符失败,PC上成功

    我尝试使用string find 中国 中 我开发cocos lua游戏时 在PC上成功 但在Android上失败 在安卓上 string find return nil 首先 我认为它们的编码可能不同 所以我尝试打印出它们的字节 Andr
  • 使用 `*((*(&array + 1)) - 1)` 获取自动数组的最后一个元素是否安全?

    假设我想获取大小未知的自动数组的最后一个元素 我知道我可以利用sizeof运算符来获取数组的大小并相应地获取最后一个元素 正在使用 array 1 1 safe Like char array SOME SIZE printf Last e
  • 从android中的地址获取纬度和经度

    我尝试从地址获取纬度和经度 问题是 当我只给出城市名称时 它会给出正确的纬度和经度 而当我给出完整的地址 如州 城市名称 街道号码 时 它会给出正确的纬度和经度没有给我正确的纬度和经度 感谢您的配合回复 我的代码是 String addre
  • Ant 任务检查数据库(连接)是否存在?

    ANT 是否有可能在不导致构建失败的情况下检查数据库 连接 是否存在 例如
  • 按 utc 日期而不是服务器日期滚动文件

    这是我的 log4net xml 文件
  • pyqt:如何从 QVBoxLayout 中删除元素?

    我想要一个多颜色选择小部件 我这样做的方式是有一个 按钮和一个最初为空的 vbox 当按下 时 它会向包含 按钮和 3 个旋转框的 vbox 添加一个 QHBoxLayout 当按下 按钮时 我希望该行消失 并且所有内容都恢复到添加该行之前
  • DLib:train_shape_predictor_ex.cpp

    我正在尝试通过执行来训练 Dlib 的形状预测器train dlib shape predictor ex cpp http dlib net train shape predictor ex cpp html on 海伦数据集 http
  • ng-content 选择绑定变量

    我正在尝试使用 Angular 2 创建一个表单生成器 一个非常基本的示例如下 this fields name Name type text name Age type number 但我也想支持自定义元素 例如 this fields
  • ResourceDictionary 源绑定到模块(用于本地化)

    我有一个 XAML 窗口 其中有一组绑定到对象的字符串 如下所示
  • Sonarqube:查看涵盖源代码的单元测试

    我们在 Bamboo 中有一个 CI 设置 它运行 Junit 测试并使用 Jacoco 计算单元测试覆盖率 然后我们运行Sonar插件进行源代码分析 一切都运行良好 我们可以看到 SonarCube 服务器上的分析 包括覆盖范围 但我们希
  • Symfony 框架的最佳论坛插件解决方案是什么?

    我正在寻找一个好的解决方案整合论坛进入 symfony 应用程序 像 phpBB 这样的东西会很棒 我见过 phpBB 插件与 symfony 集成 但这不足以满足我的目的 而且 在我看来 映射数据库表是一种蹩脚的方法 如果有人知道 Sym
  • 如何在微服务/容器/云环境中管理机密?

    微服务和云是一回事 每个人都在谈论和写作 就我个人而言 我对这个主题思考了很多 如何利用它从中受益 可能面临哪些挑战 这如何加速日常开发 以及如何管理一切 几天来困扰我的一个问题是 如何在微服务 云环境中管理机密 想象一下一家拥有 150
  • 如何在 Chrome 上下载文件而不自动将文件重命名为“下载”?

    我使用 javascript 生成文件并下载它 看来 根据 chrome 版本的不同 下载文件名可以自动重命名为 download 有办法避免吗 这是我的代码 var link document createElement a link s
  • UISearchBar 使用 Storyboard 实现

    我对 iOS 开发非常陌生 但也很兴奋 我构建了一个应用程序 它使用故事板并使用 plist 文件的内容填充 UITableView 到目前为止 我设法让一切运行良好 但现在我想添加一个搜索栏 就像联系人应用程序中的搜索栏一样 本质上这就是
  • 如何访问Singleton类的静态方法?

    我对单例类有一些困惑 以下是我的一些观点 单例类可以有静态方法吗 如果是的话我们如何调用该方法 静态类和单例类之间的主要区别是什么 我创建了我的单例类 如下所示 public class Singleton private static S
  • 如何修复 RedBlackTree 实现中的删除问题?

    这是我正在使用的 RedBlackTree 的实现 来自 Mark Allen Weiss 数据结构 public class RedBlackTree
  • SequenceStyleGenerator,如何使用前缀而不是后缀

    我正在休眠中处理序列 我们有一个关于序列命名的命名约束 格式为 SEQ 我如何自定义 参数化类 SequenceStyleGenerator 以便在序列名称中添加前缀 最后 我创建了一个继承自 SequenceStyleGenerator