spring boot統合spring data jpa時報エラーjava.lang.classNotFoundException:org.hibernate.Optimistic LockExcep

2479 ワード

バージョン環境:spring boot(1.5.9.Release)
pom.xmlファイル:

    org.springframework.boot
    spring-boot-starter-parent
    1.5.9.RELEASE

 

     
    com.oracle
    ojdbc6
    ${oracle.ojdbc6.version}
   
    
        org.springframework.boot
        spring-boot-starter-data-jpa
    
エラーメッセージ:
Caused by: java.lang.ClassNotFoundException: org.hibernate.OptimisticLockException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_144]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_144]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) ~[na:1.8.0_144]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_144]
    ... 60 common frames omitted
エラーの原因:
spring bootが1.5.9.RELEASEのバージョンで、デフォルトで導入されたspring-boot-starter-data-jpaのバージョンは1.5.9.RELEASEで、その中に含まれるhibernaneのコア依存hibernaneバージョンは5.0.12.Finalで、このバージョンでOptimistic LockExceptionクラスを除去したので、上のエラーが発生しました.
ソリューション:
調べたところ、hibernate-coreバージョンが5.0.11.Final依存度にこのクラスが存在するため、デフォルトの依存バージョンを除去し、このバージョンを追加すればいいです.修正後のpom.xmlは以下の通りです.

    org.springframework.boot
    spring-boot-starter-parent
    1.5.9.RELEASE

 


  
    com.oracle
    ojdbc6
    ${oracle.ojdbc6.version}
 

    
        org.springframework.boot
        spring-boot-starter-data-jpa
	
          
            
              hibernate-core
              org.hibernate
             
         
    
 
    
        org.hibernate
        hibernate-core
        5.0.11.Final
     
備考:この解決方法は解決策を提案するだけで、高いバージョンの5.0.12.Finalからこのクラスを除去しましたが、公式は他の方法で対応する操作を実現することは間違いないです.作者はまだ分かりません.