首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Maven Dependency - org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Properties上的NoSuchMethodError

Maven Dependency - org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Properties上的NoSuchMethodError
EN

Stack Overflow用户
提问于 2017-10-04 08:05:27
回答 3查看 4.4K关注 0票数 4

我遵循this blogpost来设置Hibernate持久层。

我当前的pom.xml如下所示:

代码语言:javascript
复制
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>projectname</artifactId>
<packaging>jar</packaging>
<version>0.1.0</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>selfserve.Main</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.7.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>1.5.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>1.5.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.6</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.2.11.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.5.6-Final</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.9.9</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>23.1-jre</version>
    </dependency>
</dependencies>

我得到以下错误:

代码语言:javascript
复制
Caused by: java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Properties;
at org.hibernate.jpa.internal.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:124)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:890)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
... 21 more

看起来我的一些依赖项相互冲突,但我真的不确定是哪一个。没有任何在线内容表明有任何冲突。

任何帮助或指导都将不胜感激!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-04 10:32:04

您的类- org.hibernate.engine.spi.SessionFactoryImplementor -已从依赖项中解析出来。

代码语言:javascript
复制
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.11.Final</version>
</dependency>

而且这个类不包含getProperties()方法。请看一下源代码。

摆脱这种依赖。然后,您的类将从dependency - hibernate-core: 5.0.12中解析出来。这个jar中的#en0#和org.hibernate.engine.spi.SessionFactoryImplementor类包含getProperties()方法。

如果您遇到任何问题,请告诉我们。

票数 3
EN

Stack Overflow用户

发布于 2018-02-26 20:40:16

我在使用EhCache时也遇到了同样的问题。显然,EhCache依赖于不同版本的hibernate-core,这导致了冲突。改回对应的版本解决了这个问题:

代码语言:javascript
复制
// https://mvnrepository.com/artifact/org.hibernate/hibernate-ehcache
compile group: 'org.hibernate', name: 'hibernate-ehcache', version: '5.0.12.Final'

给定hibernate-core版本,5.0.12当然是spring-boot-starter-data-jpa所依赖的版本(它确实是!)。

票数 2
EN

Stack Overflow用户

发布于 2018-06-22 07:41:55

仅使用hibernate 5.2使用hibernate-core:5.2.x.Final并排除hibernate-entitymanager,因为它已被弃用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46555176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档