首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找hibernate应用命名策略的位置

查找hibernate应用命名策略的位置
EN

Stack Overflow用户
提问于 2018-08-02 22:25:49
回答 1查看 355关注 0票数 0

我有一个spring引导项目,它与此设置一起运行:

代码语言:javascript
复制
@SpringBootApplication(exclude=SecurityAutoConfiguration.class)
@ImportResource("classpath:/application-context.xml")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

我发现hibernate映射我的属性而没有将camelCase转换为SNAKE_CASE,相反,它只是将upper_case应用于它(因为upper_case不区分大小写,所以无关紧要):

代码语言:javascript
复制
Caused by: java.sql.SQLException: ORA-00904: "PESSOA0_"."IDPESSOA": invalid identifier

这是我的实体:

代码语言:javascript
复制
@Entity
@Table(name = "BC_PESSOA")
@NamedQuery(name = "Pessoa.findAll", query = "SELECT p FROM Pessoa p")
public class Pessoa implements Serializable {

  private static final long serialVersionUID = 1L;

  @Id
  private Long idPessoa;

我希望hibernate隐式地将idPessoa属性映射到ID_PESSOA列,这是它的默认行为。我不知道为什么这事不会发生。

我有大量具有30-40个属性的其他实体(我知道这是一种糟糕的做法,但我不允许将其转换为较小的对象),我希望将对象映射责任完全留给hibernate。我知道我可以使用Eclipse的JPA方面来创建带有数据库的映射实体,但是我真的很好奇为什么标准行为不再是标准的了。

application-context.xml,我有一段代码显示了一些bean配置(包括私有名称):

我使用xirulei作为虚拟配置来查看任何错误,但没有出现任何错误,只出现了与以前相同的行为。改变我的方言,虽然实际上打破了春天,如果这是重要的。

编辑

我发现我的项目是使用spring 1.4.5 reasons,但是由于其他不可争辩的原因,Hibernate是4.2.19.FINAL。

在添加映射之前:

代码语言:javascript
复制
SessionFactory sf = new Configuration()         
.setNamingStrategyDelegator(ImprovedNamingStrategyDelegator.DEFAULT_INSTANCE)
      .addFile("Item.hbm.xml")
      .addFile("Bid.hbm.xml")
      .buildSessionFactory();

知道我正在使用application-context.xml配置spring/jpa/hibernate,“添加映射之前”应该在哪里呢?我是使用SpringNamingStrategy (作为旧弹簧)还是使用hibernate.ejb.naming_strategy?除此之外,哪些值是有效的?

EN

回答 1

Stack Overflow用户

发布于 2018-08-03 04:59:54

Snake情况是Spring的默认情况,而您看到的是Hibernate的默认情况。见Spring (命名策略)中的Hibernate字段命名问题

由于您使用属性显式地配置了您的EntityManagerFactory,我想这使得Boot跳过了它的默认配置。由于您的命名策略不存在,Hibernate回到了它的默认状态,这就是您所看到的。

为了解决这个问题,您可以显式引用Spring,也可以通过Spring配置ImprovedNamingStrategy,而不提供命名策略。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51662936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档