【问题标题】:Spring Boot hibernate using different naming convention to session saveSpring Boot休眠使用不同的命名约定来保存会话
【发布时间】:2015-11-20 19:26:33
【问题描述】:

类似这个问题:
ORA-00904: : invalid identifier Issue with Hibernate Dependent objects program

我正在尝试使用休眠进行批量插入。每当我尝试执行 session.save 或 session.saveOrUpdate 时,hibernate 都会抱怨我的标识符无效

堆栈输出

2015-11-20 14:17:37  ERROR : ORA-00904: "USERATTRID": invalid identifier  

实体

public class Attribute {
@Id
@GenericGenerator(name = "increment", strategy = "increment")
@GeneratedValue(generator = "increment", strategy = GenerationType.SEQUENCE)
private int USERAttrID;
private long userNumber;
private String attribute;
private String value;
private String description;
private LocalDateTime updatedDate;
private LocalDateTime createdDate;

hibernate 应用改进后的命名约定后,数据库如下所示

USER_ATTRID
ATTRIBUTE
USER_NUMBER
DESCRIPTION
VALUE
CREATED_DATE
UPDATED_DATE

如果我使用 repository.save,那么代码可以正常工作。 crud 存储库似乎知道如何将我的实体映射到数据库,但 hibernate 的会话不知道。

我在这里看到了一些解决方案:
1.使用hibernate默认的默认命名策略。表被命名为 USERATTRID。除了使列更难阅读之外,我不确定这会产生什么影响。
2.使用这里的教程将hibernate与crudrepository结合起来 http://frightanic.com/software-development/jpa-batch-inserts/
3. 弄清楚如何获取hibernate 的session.save 以使用改进的NamingConvention 映射器。任何人都可以帮助我或提供其他建议吗?
4.我想我也可以手动映射列:/。呃,这很混乱,你现在必须手动进行日期的所有转换:/

【问题讨论】:

    标签: java spring hibernate session spring-boot


    【解决方案1】:

    最好知道您实际上是如何获得会话的?最有可能想到的原因是,当您使用休眠会话时,它实际上不是使用用于构建实体管理器的相同配置构建的CrudRepository 在下面使用。

    【讨论】:

    • 我正在使用 enityManager 获取它。我真的想不出许多其他获得会话的方法。基本上是 @PersistentContext on EntityManager entityManager
    • 不,那是错误的。我掌握了一个新的 sessionFactory
    • 现在我使用 entityManagerFactory EntityManager entityManager = emf.createEntityManager(); EntityTransaction tx = entityManager.getTransaction(); tx.begin();
    【解决方案2】:
    1. 当您停止使用 hibernate jpa 的默认值以及 spring-data 为您提供开箱即用的所有东西时,最终会带来更多的麻烦
    2. 愚蠢。本教程甚至没有使用 crudRepository
    3. 同1
    4. 同1

    相反,我将头撞在墙上,试图插入一个简单的批处理过程

    【讨论】:

      猜你喜欢
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2013-05-06
      • 2011-05-03
      • 2020-01-19
      相关资源
      最近更新 更多