myeclipse8.6,struts2.1,spring3.0,hibernate3.3三个框架集成开发,主要是实体注解时不能形成映射
package com.users.entity;import java.io.Serializable;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="product")
public class Product implements Serializable{
/**
 * 
 */
private static final long serialVersionUID = 1L;
private Integer pid;
private String pname;
private double price;
private String image;
private String produce;
@Id
@Column(name="pid")
public Integer getPid() {
return pid;
}
public void setPid(Integer pid) {
this.pid = pid;
}

@Column(name="pname")
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}

@Column(name="price")
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}

@Column(name="image")
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}

@Column(name="produce")
public String getProduce() {
return produce;
}
public void setProduce(String produce) {
this.produce = produce;
}

public Product(Integer pid, String pname, double price, String image,
String produce) {
this.pid = pid;
this.pname = pname;
this.price = price;
this.image = image;
this.produce = produce;
}

public Product(){}

}hibernate.cxf.xml中配置
    <session-factory>
        <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
        <property name="connection.url">jdbc:sqlserver://127.0.0.1:1433;databaseName=users</property>
        <property name="connection.username">sa</property>
        <property name="connection.password">sa</property>
        <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="myeclipse.connection.profile">users</property>
        <property name="show_sql">true</property>
     <mapping class="com.users.entity.Product"/>
    </session-factory>包有
ejb3.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
这三个都有,其它还有N多包,都是加框架的时候自动给的报错信息是这样的
[DEBUG]2011-11-30 08:11:42org.hibernate.cfg.Configuration-connection.driver_class=com.microsoft.sqlserver.jdbc.SQLServerDriver
[DEBUG]2011-11-30 08:11:42org.hibernate.cfg.Configuration-myeclipse.connection.profile=users
[DEBUG]2011-11-30 08:11:42org.hibernate.cfg.Configuration-show_sql=true
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.users.entity.Product"/>
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
[INFO ]2011-11-30 08:11:42org.springframework.beans.factory.support.DefaultListableBeanFactory-Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@19bfb30: defining beans [sessionFactory,commdao,usersDaoImpl,productDaoImpl,usersAction,myHibTxManager,txAdvice,org.springframework.aop.config.internalAutoProxyCreator,serviceMethods,org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0]; root of factory hierarchy
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:545)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.users.test.Test.main(Test.java:23)
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.users.entity.Product"/>
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1648)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1603)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1582)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1556)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1491)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:642)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)
... 12 more

解决方案 »

  1.   

    缺少实体"com.users.entity.Product"的.xml配置
    如下:
    <property name="mappingResources">
    <list>
    <value>com/users/entity/Product.hbm.xml</value>
    </list>
    </property>
      

  2.   

    顶你个fei,解决了
    解决 方案:将SPRING 的配置文件 装配 SESSIONFACTORY的地方的CLASSorg.springframework.orm.hibernate3.LocalSessionFactoryBean改成org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean检查Spring中sessionFactory中是否引进了hibernate文件<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation"value="classpath:hibernate.cfg.xml"></property></bean>
      

  3.   

    谁把hibernate3.3中设自增主键,平常用的经验,简单描述下,马上结帖
      

  4.   

    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    SessionFactory sessionFactory = (SessionFactory) context.getBean("sessionFactory");
    Session session = sessionFactory.openSession();
    ProductDao productDao = (ProductDao) context.getBean("productDaoImpl");
    session.beginTransaction();
    List<Product> list = productDao.searchByHql("from Product");
    System.out.println(list.size()+"________=+++++++"+list.get(0).getPname());
    Product product = new Product();
    product.setPname("红樱枪");
    product.setPrice(33.4);
    product.setImage("2.jpg");
    product.setProduce("河南洛阳");
    productDao.addProduct(product);
    session.beginTransaction().commit();
    插入数据时有sql语句,但数据库中没有记录
      

  5.   

    <mapping class="com.users.entity.Product"/>
    就写了一句这个这个。。是将该实体映射给哪个表的 没有注明。。配置不完整
      

  6.   

    才begin就commit,相当于没有执行事务
    事务最好是要放在begin 和 commit 之间
      

  7.   

    sql的包没导入吧,你这个<mapping class="com.users.entity.Product"/>配置也有问题啊直接写类名就可以了
      

  8.   

    Transaction t = session.beginTransaction(); 
    *
    *
    *
    *
    t.commit();
      

  9.   

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <!-- 配置Hibernate拦截器,自动填充数据的插入、更新时间 -->
    <property name="entityInterceptor" ref="entityInterceptor" />
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
    <value>
    <!-- 设置数据库方言 -->
    hibernate.dialect=${hibernate.dialect}
    <!-- 设置自动创建|更新|验证数据库表结构 -->
    hibernate.hbm2ddl.auto=update
    <!-- 输出SQL语句到控制台 -->
    hibernate.show_sql=${hibernate.show_sql}
    <!-- 格式化输出到控制台的SQL语句 -->
    hibernate.format_sql=${hibernate.format_sql}
    <!-- 是否开启二级缓存 -->
    hibernate.cache.use_second_level_cache=false
    <!-- 配置二级缓存产品 -->
    hibernate.cache.provider_class=org.hibernate.cache.OSCacheProvider
    <!-- 是否开启查询缓存 -->
    hibernate.cache.use_query_cache=false
    <!-- 数据库批量查询数 -->
    hibernate.jdbc.fetch_size=50
    <!-- 数据库批量更新数 -->
    hibernate.jdbc.batch_size=30
    </value>
    </property> <property name="annotatedClasses">
    <list>
    <value>com.users.entity.Product</value>
    </list>
    </property>
    </bean>
      

  10.   

    各位大虾们,现在出了这样一个问题,我在action中调用逻辑类的时候,全为null
    struts.xml中是这样配置的
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    <constant name="struts.Factory" value="spring"></constant>
        <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <package name="package1" extends="struts-default">
    <action name="users" class="usersAction">
    <result name="sucpro">/WEB-INF/product/product-list.jsp</result>
    </action>
    </package>
    </struts>   
    applicationContext.xml中
    <bean id="productdaoimpl" class="com.users.dao.impl.ProductDaoImpl">
    <property name="commdao" ref="commdao"></property>
    </bean>

    <bean id="usersAction" class="com.users.action.UsersAction">
    <property name="productdao" ref="productdaoimpl"></property>
    </bean>
    在action中调用时
    private ProductDao productdao;
    public ProductDao getProductdao() {
    return productdao;
    }
    public void setProductdao(ProductDao productdao) {
    this.productdao = productdao;
    }
    为什么有get set了,还是null
      

  11.   

    TO 14# 你的问题是action中没有 implements ModelDriven<实体>
      

  12.   

    感谢大家的回答,问题都已解决 14L是,struts.xml没写对,才会出现spring不能注入情况,希望能帮到大家
    5L 是事务没有配好! 

    欢迎大家踊跃接分!