ホーム>source

悪い英語でごめんなさい。プロジェクトを spring-boot 1.1.8 で始めます 、発生した例外 No CurrentSessionContext configured 、それから私はいくつかの検索を行い、プロパティ <property name="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property> を追加しましたこの問題を解決できますが、

Javaクラスを使用してこのプロパティを構成する方法

更新:に変更しましたHibernate4.xウェイ SessionFactoryを定義するために同じエラーが発生する場合は、助けてください!

java 1.8 を使用するそして speing boot 1.1.8

ここに私のpom.xmlがあります

<前>ウィズウィズ

ここに私のサービスとコントローラーがあります

<前>ウィズウィズ

WebApplicatoinStarter.java

<前>ウィズウィズ

更新:ここに私の完全なスタックトレースがあります:

<前>ウィズウィズ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <main.basedir>${basedir}/../..</main.basedir> <m2eclipse.wtp.contextRoot>../</m2eclipse.wtp.contextRoot> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.1.8.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</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-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
あなたの答え
  • 解決した方法 # 1

    hibernateの構成と使用法が間違っています。あなたはSpringとより良いSpring Bootを使用していますが、あなたが投稿したものはそれらのフレームワークを使用しないように一生懸命試み、それらを回避しようとします。 Spring Bootを使用することを強くお勧めします。

    最初に HibernateUtils を削除します 、それを深くバリーして、二度とそれを見ないでください。 AppConfig を削除することもできます  Spring Bootは DataSource を処理でき、処理します 。

    次に application.properties というファイルを作成します  あなたの src/main/resources で  ディレクトリに次のコンテンツを配置します。

    <前>ウィズウィズ

    これは自動的に spring.datasource.url=jdbc:mysql://localhost/mysql spring.datasource.username=root spring.datasource.password= を構成します  あなたのために。提供するURLから推定されるため、ドライバーは必要ありません。次に、JPAを設定するために次のプロパティを追加します。

    <前>ウィズウィズ

    その他の設定とプロパティについては、プロパティのスプリングブートリファレンスガイドを読むことをお勧めします。この包括的なリストを確認してください。

    次にあなたの DataSource   spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext を追加  作成したJPA WebApplicationStarter を公開する   HibernateJpaSessionFactoryBean として 。

    <前>ウィズウィズ

    次に、 EntityManagerFactory  ウィズウィズ  あなたの SessionFactory に 。

    <前>ウィズウィズ

    今、あなたは @Configuration @EnableAutoConfiguration @ComponentScan("com.mytest") public class WebApplicationStarter extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(WebApplicationStarter.class); } public static void main(String[] args) throws Exception { ApplicationContext context = SpringApplication.run(WebApplicationStarter.class, args); } @Bean public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) { return hemf.getSessionFactory(); } } を使うことができます 。

  • 解決した方法 # 2

    私が持っていたので私はこのエラーが発生しました

    <前>ウィズウィズ

    に変更したとき

    <前>ウィズウィズ

    それはうまくいきました。

    @Autowire

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Tomcat 70でサポートされているアクティブなWebSocket接続の最大数はいくつですか