您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Hibernate 5.1.x命名策略(与Hibernate 4.x向后兼容)

Hibernate 5.1.x命名策略(与Hibernate 4.x向后兼容)

首先,您不需要 org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

因为它什么也不做,因此认为Hibernate使用。

Hibernate 5没有您想要的策略。所有策略均符合JPA(生成名称,如AppUser)。因此,您需要实现自己的。

例如,物理命名策略

public class UnderscorePhysicalStartegy extends PhysicalNamingStrategyStandardImpl {

    @Override
    public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
        return context.getIdentifierHelper()
                .toIdentifier(NamingStrategyUtils.classToName(name.getText()));
    }

}

它使用NamingStrategyUtils

请记住,如果您指定一个明确的名称

@Entity
@Table(name = "AppUser")
public class AppUser {

}

无论如何,您将有一个表名app_user。如果您不希望这种行为,请使用隐式命名策略。

我做了一些有关命名策略的研究。您可以引用Hibernate5NamingStrategy,它会生成带有下划线的表和列名称(如您所需要的)和约束名称(唯一,外键)。

此类用于生成名称HibernateNamingStrategy

可以使用StrategyOptions配置命名策略。

例如,要使用不带前缀(例如f_)的策略:

StrategyOptions options = StrategyOptions.builder().withoutPrefixes().build();
Hibernate5NamingStrategy strategy = new Hibernate5NamingStrategy(options);

其他示例:Hibernate 5隐式命名策略

除此之外,Hibernate 5的改进的NamingStrategy可以用来模拟Hibernate 4的行为ImprovedNamingStrategy

其他 2022/1/1 18:18:14 有405人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶