2016-06-27 16 views
0

エンティティに基づいてスキーマテーブルを生成しようとしています。アプリケーションは正しく起動しますが、SQLは生成されますが結果はありません。作成されるテーブルはありません。どうしましたか?私は、スプリングブートなしでプレーンなSpring MVC + Hibernate JPAで同じ設定を使用しており、すべてが正しく動作していました。ここでSpringブート+ Hibernate + Postgres - テーブルを作成しない

は私のpom.xmlです:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.agileplayers</groupId> 
    <artifactId>applicationname</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>ApplicationName</name> 
    <description>Application Name</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.5.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <!--<scope>runtime</scope>--> 
      <version>9.4-1201-jdbc41</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

application.properties:

spring.datasource.url = jdbc:postgresql://localhost:5432/postgres 
spring.datasource.driverClassName = org.postgresql.Driver 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL82Dialect 
spring.datasource.schema=schemaName 
spring.datasource.username=userName 
spring.datasource.password=userPassword 

spring.jpa.hibernate.ddl-auto=create 
spring.jpa.show-sql=true 
spring.jpa.generate-ddl=true 

BaseEntity.java:BaseEntityを拡張エンティティの

package com.agileplayers.applicationname.core.domain; 

import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.MappedSuperclass; 
import java.util.Date; 

@MappedSuperclass 
public class BaseEntity { 
    @Id 
    @GeneratedValue 
    private int id; 
    private Date createdOn; 
    public String description; 

    public BaseEntity() { 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public Date getCreatedOn() { 
     return createdOn; 
    } 

    public void setCreatedOn(Date createdOn) { 
     this.createdOn = createdOn; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 
} 

例 - Entry.java :

package com.agileplayers.applicationname.core.domain; 

import javax.persistence.Entity; 
import javax.persistence.ManyToOne; 
import java.util.Date; 

@Entity 
public class Entry extends BaseEntity{ 

    private String type; 

    @ManyToOne 
    private Account account; 

    public Entry() { 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public Account getAccount() { 
     return account; 
    } 

    public void setAccount(Account account) { 
     this.account = account; 
    } 
} 

答えて

2

私はこの問題を修正しました。 spring.datasource.schema=schemaNameの代わりにspring.jpa.properties.hibernate.default_schema=schemaNameが必要です。

私の場合には、テーブルを生成するために必要な必要なプロパティのセットは以下の通りです:デフォルトのpostgresによって

spring.datasource.url = jdbc:postgresql://localhost:5432/postgres 
spring.jpa.properties.hibernate.default_schema = schemaName 
spring.datasource.username = userName 
spring.datasource.password = userPassword 
spring.jpa.hibernate.ddl-auto = create-drop 
spring.jpa.show-sql = true 
+1

は「public」スキーマ名を使用しています。 – bram000

関連する問題