使用不同命名约定的Spring Boot hibernate会话保存

时间:2015-11-20 19:26:33

标签: java spring hibernate session spring-boot

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

我正在尝试使用hibernate进行批量插入。每当我尝试执行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使用ImprovedNamingConvention映射器。任何人都可以帮我这个或给我另一个建议吗? 我想我也可以手动映射列:/。呃这很麻烦,你现在必须手动完成日期的所有转换:/

1 个答案:

答案 0 :(得分:1)

了解你实际上如何获得会话会很好吗?想到的最可能的原因是当你使用hibernate会话时,它实际上不是使用用于构建实体管理器的相同配置构建的CrudRepository在下面使用。

相关问题