JPA可以在本地创建数据库表,但不能正确使用hana数据库

2020-09-05 10:59发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们正在Cloud Platform中进行应用程序开发。

在我们的项目中,我们正在使用JPA创建表。 当我在本地运行该应用程序时,JPA会正确创建具有所有方面(例如外键约束)的数据库表。 但是,当我尝试在hana数据库中创建表时,存在与约束相关的错误。 Hana无法识别JPA应用程序中定义的外键约束。 它正在创建没有任何关系的表,我的意思是即使我在类中定义基数,每个数据库表也在单独创建。 我分析了由JPA生成的查询,它生成ALTER TABLE查询以在本地数据库中定义外键约束。 我在hana中手动尝试了此查询,它可以工作。 但是我认为如果我们使用JPA触发databsae,它不会生成此查询。 我猜想,JPA在hana中创建表时不会生成ALTER TABLE查询。 有什么办法可以解决这个问题。

注意:我创建了hana mdc试用数据库,并定义了安全管理中的必要角色。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们正在Cloud Platform中进行应用程序开发。

在我们的项目中,我们正在使用JPA创建表。 当我在本地运行该应用程序时,JPA会正确创建具有所有方面(例如外键约束)的数据库表。 但是,当我尝试在hana数据库中创建表时,存在与约束相关的错误。 Hana无法识别JPA应用程序中定义的外键约束。 它正在创建没有任何关系的表,我的意思是即使我在类中定义基数,每个数据库表也在单独创建。 我分析了由JPA生成的查询,它生成ALTER TABLE查询以在本地数据库中定义外键约束。 我在hana中手动尝试了此查询,它可以工作。 但是我认为如果我们使用JPA触发databsae,它不会生成此查询。 我猜想,JPA在hana中创建表时不会生成ALTER TABLE查询。 有什么办法可以解决这个问题。

注意:我创建了hana mdc试用数据库,并定义了安全管理中的必要角色。

付费偷看设置
发送
3条回答
lukcy2020
1楼 · 2020-09-05 11:21.采纳回答

您好Gokhan,

您是否已在JPA持久性框架上将方言设置为Hana?

假设您使用的是EclipseLink,则应在性能上进行设置 .xml

 <属性名称=" eclipselink.target-database" value =" HANA"/> 

如果您使用的是Hibernate,这里有一个教程

 <属性名称=" hibernate.dialect" value =" org.hibernate.dialect.HANAColumnStoreDialect"/> 

关于,
伊凡

悠然的二货
2楼-- · 2020-09-05 11:31

伊万,你好

我实现了您建议的以下属性,并且该属性有效。 JPA向HANA数据库平台提供了外键约束。

 <属性名称=" eclipselink.target-database" value =" org.eclipse.persistence.platform.database.DatabasePlatform"/> 

我检查了源代码,您对supportsForeignKeyConstraints问题是正确的。 即使该方法对于HANA数据库平台返回false,但我不了解为什么此target-database属性起作用,但我还是有些困惑。 我想,HANA数据库可能有不同的实现技术。

在此源代码中,已经定义了supportsForeignKeyConstraints方法,并且该方法返回true。 在我们使用的属性中,我们引用了此DatabasePlatform.java类。 我认为,这就是它起作用的原因。

感谢您的帮助。

问候。

Gokhan。

lukcy2020
3楼-- · 2020-09-05 11:32

我们遇到了同样的问题,我在eclipselink存储库中打开了一个拉取请求:

https://github.com/eclipse-ee4j/eclipselink/pull/491

一周热门 更多>