【发布时间】:2017-08-03 03:17:49
【问题描述】:
下面是我的pom:
<dependencies>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.6.0</version>
</dependency>
<dependency>
<groupId>com.github.dvdme</groupId>
<artifactId>ForecastIOLib</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>com.wewherego</groupId>
<artifactId>api-core</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.3.1.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.3.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.7</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>10.2.0.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>com.googlecode.lambdaj</groupId>
<artifactId>lambdaj</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.98</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-easymock</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
<scope>test</scope>
</dependency>
</dependencies>
休眠配置是通过注解设置的:
公共类 HibnerateConfiguration {
//declarations that are ignored
public static AnnotationConfiguration config() throws IOException {
AnnotationConfiguration hibernateConfig = new AnnotationConfiguration();
hibernateConfig.setProperty(HIBERNATE_DIALECT_STRING, HIBERNATE_DIALECT_MYSQL_VALUE);
hibernateConfig.setProperty(HIBERNATE_DRIVER_CLASS_STRING, HIBERNATE_DRIVER_CLASS_MYSQL_VALUE);
String jdbcString = "jdbc:"
+ getHost()
+ ":"
+ .getPort()
+ "/"
+ getDBName()
+ "?autoReconnect=true";
hibernateConfig.setProperty(HIBERNATE_DB_URL_STRING, jdbcString);
hibernateConfig.setProperty(HIBERNATE_DB_USERNAME_STRING, getUser());
hibernateConfig.setProperty(HIBERNATE_DRIVER_PW_STRING, getPassword());
hibernateConfig.setProperty(HIBERNATE_SESSION_CONTEXT_CLASS_STRING, HIBERNATE_SESSION_CONTEXT_CLASS_VALUE);
hibernateConfig.setProperty(HIBERNATE_TIMEOUT_STRING, HIBERNATE_TIMEOUT_VALUE);
hibernateConfig.addAnnotatedClass(myClass.class);
return hibernateConfig;
}
}
在处理会话时,我有:
包 com.wewherego.api.malloc.infrastructure;
public class SessionHandler {
private static SessionFactory sessions= null;
static {
try {
if (sessions== null) {
synchronized (SessionFactory.class) {
sessions= HibnerateConfiguration.config().buildSessionFactory();
}
}
}
catch(Throwable t) {
throw new ExceptionInInitializerError(t);
}
}
/*
* Returns a session anyway. If currently no session exist, open a new one;
* If there is a current session, use the existing one.
* ***NOTE: potential issue in this method when dealing with session like this***
*/
@Override
public Session getSession() {
try {
return sessions.getCurrentSession();
}
catch (HibernateException he) {
return sessions.getCurrentSession();
}
}
public void close() {
sessions.close();
}
}
它被用作:
session.createQuery(String.format("FROM %s", "myTable"));
在
会抛出这个异常:
Caused by: java.lang.NoSuchMethodError: org.hibernate.Session.createQuery(Ljava/lang/String;)Lorg/hibernate/query/Query;
在运行时,依赖项是:
hibernate 文档在 Session 类中还有 createQuery:https://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Session.html#createQuery(java.lang.String)
但确定我错过了什么?
【问题讨论】:
-
对于初学者来说,停止混合休眠版本......如果你想要麻烦的话,你正在混合 3.2.6、5.1.0 和 5.2.3。
-
我在使用 Hibernate java 配置方法编写一些示例项目时遇到了同样的问题。我不得不承认,这个问题不会在 5.2.x(更好的 2.0)下的休眠版本中持续存在,所以我建议你降级一些依赖项以使其正常工作。 @PRATHAP S 在某些时候也是正确的
-
@M.Deinum 感谢您的建议 - hibernate 的 3.2.6 来自 hibernate-annotation,其最新版本仅为 3.x - 是否可以替代它?
-
@Reborn 不是降级某些依赖项,而是一种更新代码使其正常工作的方法吗?
-
你不需要休眠注释,因为它现在已经集成,只需删除该依赖项。
标签: java spring hibernate maven