2013-05-07 67 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

相關問題