在pom.xml中我使用spring-tx-4.1.4.RELEASE.jar,但maven编译项目时出错:
org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标org.apache.maven.plugins:maven-compiler-plugin:2.3.2:在项目事务上编译(default-compile):编译失败 \ p4_projects \ transaction \ src \ main \ java \ com \ sick \ dao \ hibernate \ DeviceModelDaoHibernate.java:[25,15]找不到符号符号:方法值() location:@interface org.springframework.transaction.annotation.Transactional
我找不到原因。依赖关系层次结构显示所有spring依赖关系的正确版本4.1.4。我在4.1.3中得到了相同的结果。
我会感激你的帮助。
谢谢,
埃琳娜
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.sick.dao.DeviceModelDao;
import com.sick.model.DeviceModel;
@Repository
@Transactional(value = "primary")
public class DeviceModelDaoHibernate implements DeviceModelDao {
private SessionFactory sessionFactory;
public DeviceModelDaoHibernate() {
}
public DeviceModelDaoHibernate(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public void save(DeviceModel deviceModel) {
sessionFactory.getCurrentSession().saveOrUpdate(deviceModel);
}
}
pom.xml太大了,无法在此发布,因此我只发布了依赖项的版本:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<red5-server.version>1.0.2-SNAPSHOT</red5-server.version>
<red5-client.version>1.0.2-SNAPSHOT</red5-client.version>
<camel.version>2.14.1</camel.version>
<hibernate.version>4.3.8.Final</hibernate.version>
<spring.version>4.1.4.RELEASE</spring.version>
<spring-security.version>3.2.5.RELEASE</spring-security.version>
<spring-integration.version>3.0.0.RELEASE</spring-integration.version>
<slf4j.version>1.7.5</slf4j.version>
<mina.version>2.0.7</mina.version>
<logback.version>1.0.13</logback.version>
<junit.version>4.10</junit.version>
<cargo.host>localhost</cargo.host>
<cargo.port>25888</cargo.port>
<cargo.wait>false</cargo.wait>
<tomcat.version>6.0.14</tomcat.version>
</properties>
....
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<type>jar</type>
</dependency>
</dependencies>
答案 0 :(得分:0)
使用Eclipse?
试试Maven clean&gt;项目清洁&gt; Maven安装。
错误确实是可疑的,我认为你没有代码问题,但有Maven。
答案 1 :(得分:0)
感谢大家,我已经解决了这个问题。在pom.xml中,我已经在org.hibernate依赖项之前放置了所有org.springframework依赖项,问题已经消失。
答案 2 :(得分:0)
同样的问题:@Transactional 错误地来自一个旧的“spring-dao”库,它是“spring-hibernate3”的传递依赖,但我希望它来自“spring-tx”。
通过在“spring-hibernate3”之前移动“spring-tx”依赖项来解决它(我想我也可以使用排除)。
使用 mvn dependency:tree
可视化传递依赖。