3

Hibernate 正在为 TABLE_PER_CLASS 继承生成临时表,但 prod。oracle 用户没有这些创建表权限,因此该方法不是我们项目的选项。

据说 Hibernate 版本 5.2.8 解决了这个问题。我们相应地更新了 pom.xml 以覆盖默认的启动器休眠版本设置。

我们仍然对以下属性没有任何运气。

 <property name="hibernate.hql.bulk_id_strategy"
 value="org.hibernate.hql.spi.id.inline.InlineIdsInClauseBulkIdStrategy"
   />

APPLICATION PROPERTIES 也更新如下

**

spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@192.168.1. :1521:
spring.datasource.username= 
spring.datasource.password= 
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.hql.bulk_id_strategy=org.hibernate.hql.spi.id.inline.InlineIdsInClauseBulkIdStrategy

**

此设置在 Spring Boot 应用程序中的正确位置在哪里?

容器仍在测试环境中生成临时表。服务器启动。

亲切的问候

pom.xml如下

http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0

<groupId>x.xx.ortakonline</groupId>
<artifactId>PolsanOrtakOnlineServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.0.RELEASE</version>

</parent>


<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <jjwt.version>0.7.0</jjwt.version>
      <hibernate.version>5.2.8.Final</hibernate.version>
</properties>


<dependencies>
    <dependency>

        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>10.2.0.4.0</version>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope> test </scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.7.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.mobile</groupId>
        <artifactId>spring-mobile-device</artifactId>
    </dependency>


    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
    </dependency>
</dependencies>

4

2 回答 2

5

此外,在创建spring.jpa.properties.*本地时,所有属性都作为普通 JPA 属性(去掉前缀)传递EntityManagerFactory

这来自Spring Boot 参考指南中的 JPA 部分,简而言之,解释了如何传递其他提供程序特定的属性。

将以下内容添加到您的application.properties应该可以解决问题

spring.jpa.properties.hibernate.hql.bulk_id_strategy=org.hibernate.hql.spi.id.inline.InlineIdsInClauseBulkIdStrategy
于 2017-03-15T07:20:15.483 回答
1

正如上面M.Deinum所建议的,您应该将以下内容添加到您的application.properties文件中:

spring.jpa.properties.hibernate.hql.bulk_id_strategy=org.hibernate.hql.spi.id.inline.InlineIdsInClauseBulkIdStrategy

并将以下内容添加到properties您的部分pom.xml以覆盖捆绑的hibernate-core库。这是为了确保InlineIdsInClauseBulkIdStrategy找到该类,因为该类仅在Hibernate Core 5.3.1.Final及以上版本中可用:

<properties>
        ...
        <hibernate.version>5.3.1.Final</hibernate.version>
</properties>
于 2018-06-21T14:58:24.123 回答