当前位置: 首页 > 知识库问答 >
问题:

更改Hibernate 5命名策略+Spring Boot+注释

空鸿云
2023-03-14

我的spring boot项目在实体类中使用JPAhibernate注释。我有自己的通用存储库,我而不是从JPA的EntityManagerFactory获取Hibernate SessionFactory。当创建新表和列时,就会出现此问题。骆驼列是在数据库上用下划线创建的。在application.yml中,我将命名策略更改为org.hibernate.cfg.ejb3NamingStrategy,但没有什么固定的。

 jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect 
    show-sql: true 
    hibernate:
        ddl-auto: update 
        naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
@Autowired
public SessionFactory   sessionFactory;

public Session getSession() {
    try {
        return sessionFactory.getCurrentSession();
    } catch (HibernateException e) {
        System.out.println(e.getMessage().toString());
    }
    return sessionFactory.openSession();
}

共有1个答案

尉迟高澹
2023-03-14

对于Hibernate,您应该使用不同的属性:

spring.jpa.hibernate.naming.implicit-strategy= # Hibernate 5 implicit naming strategy fully qualified name.
spring.jpa.hibernate.naming.physical-strategy= # Hibernate 5 physical naming strategy fully qualified name.

在这里可以看到:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#common-application-properties

 类似资料:
  • 问题内容: 我对hibernate(5.1版)的命名策略有些困惑-即它更改了我的表名,我想避免这种情况。另外- 根据intelij似乎已弃用,但我找不到正确配置它的(另一种)方法。 我在application.properties中具有以下配置: 如前所述,第一个被标记为已练习。 现在我有一个实体: 表格名称是类似usaUploadTable 中的名称。 现在,当我运行我的应用程序时,我得到 表’

  • 我对hibernates(5.1版)的命名策略有点困惑——也就是说,它改变了我的表名,我希望避免这种情况。还有-

  • underscored 参数 Sequelize 为模型提供了 underscored 参数. 设为 true 时,此参数会将所有属性的 field 参数设置为其名称的 snake_case 版本. 这也适用于由关联和其他自动生成的字段自动生成的外键. 例: const User = sequelize.define('task', { username: Sequelize.STRING },

  • Kotlin+Spring Boot Cassandra应用程序忽略了注释。下面的注释 正在映射到而不是。由于列在表中不存在,因此会导致运行时错误。

  • 定义如下JPA实体时: 自动创建的SQL表名为“CASEEXAMPLE”,列名为“FOOBAR”。如何使用下划线(例如“case\u example”和“foo\u bar”)将其从大写改为小写,而不必为每个@表和@列添加名称=“foo\u bar”? 命名策略是由JPA或实现定义的吗?我将JPA 2.0与Eclipse Link 2.5.0一起使用。

  • 我知道我可以用注释命名所有表,并为所有列提供名称,但这不是我想要的解决方案。 不幸的是,我没有找到任何匹配我的案例的策略(我知道这展示了如何创建自定义命名策略,但我不认为我的案例是不常见的),我应该为我的MariaDB配置使用什么命名策略来匹配我的案例?