2016-02-13 54 views
4

我使用Spring引導創建了一個框架應用程序。這是我pom.xmlSpring Boot:受管版本是1.3.2.RELEASE該工件在org.springframework.boot中進行管理:spring-boot-dependencies:1.3.2.RELEASE

<?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.lynas</groupId> 
    <artifactId>SpringMVCHibernate</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>SpringMVCHibernate</name> 
    <description>SpringMVCHibernate</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.2.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-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jdbc</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.projectlombok</groupId> 
      <artifactId>lombok</artifactId> 
      <version>1.16.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
     </dependency> 
    </dependencies> 

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


</project> 

我停留在這一步:

春季啓動:託管版本是1.3.2.RELEASE神器 在 org.springframework.boot管理:彈簧啓動依存關係:1.3.2.RELEASE

enter image description here

當我嘗試添加的Hiberante 5.1.0.Final手動,此通知出現:

壓倒一切的託管版本4.3.11.Final對Hibernate核心

enter image description here

幫我解決這些問題。

回答

8

春季啓動提供了依賴管理的休眠。警告是Eclipse通過直接在依賴項上聲明版本來告訴你已經重寫了這個依賴管理。這是一件有風險的事情,因爲你最終可能會在類路徑中混合使用Hibernate版本。實際上,看着你的pom,你已經覆蓋了hibernate-core的版本,而不是hibernate-entitymanager的版本。這意味着你將在類路徑中擁有5.1.0.Final和4.3.11.Final。這幾乎肯定會在運行時導致問題。

使用Hibernate 5更安全的方法是覆蓋Boot的依賴管理。當您使用spring-boot-starter-parent爲您的POM的父母,你可以做到這一點通過重寫hibernate.version屬性:

<properties> 
    <hibernate.version>5.1.0.Final</hibernate.version> 
</properties> 

這將確保在其春季啓動提供依賴管理所有休眠模塊將具有所需的版本。

最後請注意。 Hibernate 5.1非常新,包含一些重大更改,甚至包括5.0.x.因此,您可能會遇到一些不兼容問題。如果你不想成爲右邊的,5.0.x可能是更安全的選擇。它將成爲Spring Boot 1.4中的默認Hibernate版本。

+3

有關如何使用Gradle完成此任務的任何建議? – Snekse

4

Spring Boot自動定義本附錄中列出的依賴項的版本。 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#appendix-dependency-versions

Eclipse只是提醒它。 如果您確實要更改該依賴項的版本,則可以忽略此警告。

更新:

見劉德華的回答是:https://stackoverflow.com/a/35385268/1433665

+1

按照你的答案並提交鏈接,最新版本的'休眠-core'是5.1.0.Final ,Spring Boot中的默認版本是4.3.11.Final。 Spring Boot有這個缺點嗎? –

+1

這是Spring Boot的特色和巨大賣點。你得到了良好的測試和穩定的依賴關係矩陣,但是你並不總是在這個矩陣中出現邊緣問題。如果你想使用更新的依賴關係,你可以覆蓋默認的Spring Boot版本。 – luboskrnac

+1

@dovy在Spring引導中有一個github問題來支持Hibernate 5. https://github.com/spring-projects/spring-boot/issues/2763 – TheKojuEffect

0

我有同樣的問題,我通過將HIBERNATE的版本更改爲4.3.5.Final來解決它。在pom。XML

<properties> 
    <hibernate.version>4.3.5.Final</hibernate.version> 
</properties> 

或只需添加hibernate.version到其他屬性,如:

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

    <hibernate.version>4.3.5.Final</hibernate.version> 
</properties> 
相關問題