2013-05-07 64 views
-1

我有我的web应用程序的Maven 3岁以下的Spring MVC开发在这个控制器我已经@Autowired PersonDAO dbController 我想使用JPA 2.0管理持久性,所以我rewrited我applicationContext.xml的一个控制器: 我加什么是解决方案正确开发这个Spring和JPA webapp示例?

`<tx:annotation-driven transaction-manager="transactionManager" /> 

    <bean 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    id="entityManagerFactory"> 
    <property name="dataSource" ref="dataSource" /> 
<!-- <property name="packagesToScan" value="net.tirasa.test.addressbook.dao" />--> 
    <property name="persistenceUnitName" value="persistenceUnit" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
     <property name="showSql" value="true" /> 
     <!--<property name="generateDdl" value="true" />--> 
     <!--<property name="databasePlatform" value="org.hibernate.dialect.H2Dialect" />--> 
     <!--<property name="database" value="H2" />--> 
     </bean> 
    </property> 
    </bean> 

    <bean class="org.springframework.orm.jpa.JpaTransactionManager" 
     id="transactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    </bean> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="org.h2.Driver"/> 
    <property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 
    </bean>` 

我PersonDAOImpl是:

@Repository 
public class PersonDAOJpaImpl implements PersonDAO { 

    //@Value("#{entityManager}") 
    @PersistenceContext(type = PersistenceContextType.TRANSACTION) 
    //@Autowired 
    protected EntityManager entityManager; 

    private final static Logger LOG = LoggerFactory.getLogger(PersonDAOJpaImpl.class); 

    @Transactional 
    public void save(String id, String name, String email, String telephone) throws DatabaseException { 

     Person person = null; 
     if (find(id) == null) { 
      entityManager.persist(person); 
     } else { 

      entityManager.merge(person); 
     } 
    } 

    @Transactional 
    public Person find(String requestParam_id) throws DatabaseException { 
     return entityManager.find(Person.class, requestParam_id); 
    } 

    @Transactional 
    public List<Person> list() throws DatabaseException { 
     Query query = entityManager.createQuery("select p from Persons p"); 
     List<Person> resultList = query.getResultList(); 
     Person p = null; 
     entityManager.find(Person.class, "Andrea Patricelli"); 
     System.out.println("ECCO UN ELEMENTO DELLA LISTA: ------->" + resultList.iterator().next().getName()); 
     System.out.println("ECCO IL RISULTATO DELLA FIND: -------->" + p.getName()); 
     return resultList; 
    } 

但没有任何工程; 我做错了什么? 特别是我不知道如何连接我的PersonDAO dbController与PersonDAOImpl和entityManager

+0

没有作品是太泛泛。也许你需要重新安装你的操作系统。花几分钟或几小时阅读关于一切如何连接的Spring文档。 – 2013-05-07 14:55:47

+0

我知道,但它太广泛了......但我没有时间,我有一个尊重的里程碑,我害怕失去很多时间在无用的事情上,只是为了了解几件重要的事情 – andPat 2013-05-08 07:01:43

回答

1

要开始扫描您的包未正确安装entityManagerFactory。当你应该扫描你的模型/域(在其上有@Entity的类)时,你正在扫描你的dao。

+0

谢谢,你是完全正确的 – andPat 2013-05-08 07:26:30

相关问题