2016-08-22 6 views
2

barebones Springブートプロジェクトdescribed hereを設定していますが、基本設定で問題が発生しています。H2 Springブートアプリケーションでスキーマが空です

DatabaseLoaderが呼び出されないと思われます。このプロジェクトのH2 Consoleを開くと、Employeeテーブルを含むスキーマは表示されません。

ここに私のpom.xmlの関連部分です:

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

    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <!-- 
     <scope>runtime</scope> 
     --> 
    </dependency> 
    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>1.16.4</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-devtools</artifactId> 
     <optional>true</optional> 
    </dependency> 
</dependencies> 

は自分のドメイン:

@Data 
@Entity 
public class Employee { 
    private @Id @GeneratedValue Long id; 
    private String firstName; 
    private String lastName; 
    private String description; 

    public Employee() {} 

    public Employee(String firstName, String lastName, String description) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.description = description; 
    } 

} 

とデータベースローダー: パブリッククラスDatabaseLoaderはCommandLineRunner { 民間最終EmployeeRepositoryリポジトリを実装します。ローカルホストでのアプリケーションの起動後にコンソールにナビゲート

@Autowired 
    public DatabaseLoader(EmployeeRepository repository) { 
     this.repository = repository; 
    } 

    @Override 
    public void run(String... strings) throws Exception { 
     this.repository.save(new Employee("duke", "earl", "dude")); 
    } 

} 

:のみINFORMATION_SCHEMAとユーザーメニューで〜/テスト:H2:8080 /コンソールは、JDBCを示しています。私はこれをCRUDリポジトリとして設定し、投稿することはできますが、属性データは保存されていないようですが、Employeesリソースが認識されています。これは臆面もなくジョシュロングから借りている

{ 
    "_links": { 
    "self": { 
     "href": "http://localhost:8080/api/employees/4" 
    }, 
    "employee": { 
     "href": "http://localhost:8080/api/employees/4" 
    } 
    } 
} 

答えて

4

春ブーツと、デフォルトのH2のURLは次のとおりです。jdbc:h2:mem:testdb

あなたapplication.propertiesにこれを追加する必要がありますjdbc:h2:~/test使用するには:何が起こっている

spring.h2.console.enabled=true 
spring.datasource.url=jdbc:h2:~/test 

は、あなたが書いている、あります春のブートのメモリデータベース(testdb)の従業員。次に、h2コンソールをjdbc:h2:~/testに開きます。このコンソールは即座にそれを作成し、空の内容を参照できます。

spring.h2.console.enabled=trueとすると、ブラウザを開いてhttp://localhost:8080/h2-consoleに接続し、データベースの内容を表示することができます。次の設定を使用します。

  • 保存セッティング:Generic H2(組み込み)
  • ドライバクラス:org.h2.Driver
  • URLます。jdbc:h2は:MEM:TESTDB
  • ユーザ名:
  • SA
  • パスワード:
+0

コンソールが稼働しました - ありがとう!投稿を送信するとテーブルにレコードが作成されますが、名前と説明フィールドはすべてnullです。これは私にとって初めてのロンボクの問題かもしれませんが、今私はこれを調べています – IcedDante

+0

これから試してみますが、私はチュートリアル "React.jsとSpring Data REST:Part 1"からかなりコピーしていますなぜ私はそれがちょうど宣伝されたように動作しないのか分かりません – IcedDante

+0

私はゲッター/セッターを手動で追加し、それは働いた。奇妙な!私はそれが何であるかを調査しますが、助けてくれてありがとう – IcedDante

0

POST:{"firstName": "Bilbo", "lastName": "Baggxins", "description": "burglar"} 

はバックが付属しています。これは動作するCommandLineRunnerの実装です。 Github full code

@Component 
class SampleRecordsCLR implements CommandLineRunner { 

    private final ReservationRepository reservationRepository; 

    @Autowired 
    public SampleRecordsCLR(ReservationRepository reservationRepository) { 
    this.reservationRepository = reservationRepository; 
    } 

    @Override 
    public void run(String... args) throws Exception { 
     Stream.of("Josh", "Jungryeol", "Nosung", "Hyobeom", 
       "Soeun", "Seunghue", "Peter", "Jooyong") 
       .forEach(name -> reservationRepository.save(new Reservation(name))); 

     reservationRepository.findAll().forEach(System.out::println); 
    } 
} 
関連する問題