我试图将Hibernate与Spring集成,但我遇到了一些困难。我不确定在哪里搜索此问题的来源,也许我只是使用我的项目架构和代码粘贴屏幕。
FlowerDAO:
@ManagedBean(name="flowerDao")
@RequestScoped
@Component
public class FlowerDAOImpl implements FlowerDAO {
@PersistenceContext(unitName="flowerproject")
EntityManager entityManager;
private EntityManagerFactory entityManagerFactory;
private DataSource dataSource;
public EntityManager getEntityManager() {
return entityManager;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
public DataSource getDataSource() {
return dataSource;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public FlowerDAOImpl(){
entityManagerFactory = Persistence.createEntityManagerFactory("flowerproject");
entityManager = entityManagerFactory.createEntityManager();
}
@Override
public Set<Flower> findAll() {
TypedQuery<Flower> query = entityManager.createNamedQuery("Flower.findAll", Flower.class);
return (Set<Flower>) query.getResultList();
}
的persistence.xml:
<persistence-unit name="flowerproject" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="root" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3307/flowersdb" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
</properties>
</persistence-unit>
beans.xml中:
<bean id="flowerDAO" class="org.damian.dao.FlowerDAOImpl">
<property name="dataSource" ref="dataSource" />
</bean>
<mvc:annotation-driven />
<context:component-scan base-package="com.flowerproject.controller" />
<context:component-scan base-package="com.flowerproject.dao" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3307/flowersdb" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
答案 0 :(得分:0)
尝试在beans.xml文件中添加引用persistence.xml文件的bean。
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:persistence.xml" />
<property name="persistenceUnitName" value="flowerproject" />
<property name="dataSource" value="dataSource"/>
</bean>
persistance.xml文件应位于resources文件夹中。此外,persistance.xml和dataSource中还存在重复的连接信息。根据您的想法,可能会删除一个。