2014-08-31 49 views
1

我试图集成Hibernate和Struts2的整合Struts和Hibernate的

这是applicationContext.xml的

 <bean id="user" class="com.caveofprogramming.service.imp.UserImp" /> 
    <bean id="userSpringAction" class="com.caveofprogramming.actions.UserSpringAction"> 
    <property name="user" ref="user" /> </bean> 

    <bean id="customerDAO" class="com.caveofprogramming.entity.CustomerDAO"> 
    <property name="transactionManager" ref="transactionManager" /> </bean> 

    <bean id="customerEntity" class="com.caveofprogramming.entity.Customer" /> 

    <bean id="customerAction" class="com.caveofprogramming.actions.CustomerAction"> 
    <property name="customerEntity" ref="customerEntity" /> 
    <property name="customerDAO" ref="customerDAO" /> 
    </bean> 

    <bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
      p:location="/WEB-INF/jdbc.properties" /> 

     <bean id="dataSource" 
      class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" 
      p:driverClassName="${jdbc.driverClassName}" 
      p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" 
      p:password="${jdbc.password}" /> 

     <bean id="sessionFactory" 
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
      <property name="dataSource" ref="dataSource" /> 
      <property name="configLocation"> 
       <value>classpath:hibernate.cfg.xml</value> 
      </property> 
      <property name="configurationClass"> 
       <value>org.hibernate.cfg.AnnotationConfiguration</value> 
      </property> 
      <property name="hibernateProperties"> 
       <props> 
        <prop key="hibernate.dialect">${jdbc.dialect}</prop> 
        <prop key="hibernate.show_sql">true</prop> 
       </props> 
      </property> 
     </bean> 
     <tx:annotation-driven /> 
     <bean id="transactionManager" 
      class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
      <property name="sessionFactory" ref="sessionFactory" /> 
     </bean> 

    </beans> 

我已经有我的jdbc.properties和保存我的客户在DAO

CustomerDAO

public class CustomerDAO { 
    @Autowired 
    private SessionFactory sessionFactory; 

    public void persistAuthor(Customer customer) { 
     sessionFactory.getCurrentSession().save(customer); 
    } 
} 

这是实体类

@Table(name="customer") 
@Entity 
public class Customer { 
    @Id 
    @GeneratedValue 
    private Integer id; 
    private String name; 
    private String password; 
    public Integer getId() { 
     return id; 
    } 
//Getter/Setters// 
} 

这是我的Action类

public class CustomerAction extends ActionSupport { 
    private static final Logger logger = Logger.getLogger(CustomerAction.class); 
    Customer customer; 
    CustomerDAO customerdao; 
    private Integer id; 
    private String name; 
    private String password; 

//GETTERS/SETTERS// 

    @Action(value="/customer", results={ 
      @Result(name="success",location="/customerSuccess.jsp"), 
     }) 
    public String execute() throws Exception { 
     logger.debug("Hello"); 
    customer.setId(getId()); 
    customer.setName(getName()); 
    customer.setPassword(getPassword()); 
    customerdao.persistAuthor(customer); 
    return SUCCESS; 
} 

但是,它让我看到这个异常

异常

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.IllegalStateException: AnnotationTransactionAttributeSource is only available on Java 1.5 and higher 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:420) 
+1

您正在使用哪个java版本? – 2014-09-01 09:24:44

回答

0

Spring框架不支持您的Java版本,由于TxNamespaceUtils它可能是一个错误也报告为Bug 1090968。建议不要使用带有最新Java 8的旧库。尝试升级某些库,尤其是Spring和Hibernate,并将配置更改为不使用已弃用的API。