2017-12-04 6 views
0

私はHibernateでSpringブートを使用しています。私は、サーバーがリロードするときにMySQLテーブルのすべての内容を削除しようとしています。私はそれがばかげて聞こえることを知っているが、私は本当にそれが馬鹿に聞こえるので、おそらくそれを行う方法を見つけることができません。何か案は?Springブート時にMySQLテーブルのデータをクリアする

+0

"hibernate.hbm2ddl.auto"を "create-drop"として試しましたか? – Sanj

答えて

1

ですべてのテーブルを作成します。

このテーブルのdeleteAllロジックをContextRefreshedEventイベントのApplicationListenerに追加することをお勧めします。ここではすべてのSpring Beanを使用できます(これは@PostConstructorとの違いです)。このクラスをSpringサービスとして注釈を付けることができますそして、使用は

public class YourJobClass implements ApplicationListener<ContextRefreshedEvent>{ 

     public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { 
      //Do your job 
      } 
    } 

にautowiredたり、特定の何かを必要としない場合は、この特定のケースで初期化されるように、すべてのコンテキストを必要とするものの、単に、任意のクラスの@PostConstructブロックに(@PostConstructをあなたのロジックを実行します注釈付きBeanでautowiringが完了したことのみを保証します)

Her eはイベントのリストですhttp://www.logicbig.com/tutorials/spring-framework/spring-core/spring-events/

+0

これは私が必要なものです、ありがとう! – user2142183

0

テーブルのすべての内容を削除する場合は、application.propertiesに次のプロパティを追加してください。あなたはDDL-自動プロパティを使用することはできませんすべてのスキーマを単一のテーブルのみクリアしたくないのでcreateプロパティは、開始時間

spring.jpa.hibernate.ddl-auto=create 
関連する問題