当我编译我的spring项目时,我收到以下错误.
在类路径资源中定义名为'entityManagerFactory'的bean时出错[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]:调用init方法失败
我正在使用STS Eclipse和MySql数据库
我的连接字符串Application.Properties是
spring.datasource.url=jdbc:mysql://localhost:3306/stgdb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
Run Code Online (Sandbox Code Playgroud)
详细错误如下
=================================================
2016-10-15 15:34:38.875[0;39m [31mERROR[0;39m [35m3700[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.boot.SpringApplication [0;39m [2m:[0;39m Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE] …Run Code Online (Sandbox Code Playgroud) 我通过各种资源了解了它们.进口商是: -
这是我对什么是差异的理解.我不确定我对JPA和ORM是否正确
ORM:对象关系映射是将数据从面向对象语言转换为关系数据库的概念/过程,反之亦然例如在java中,它借助于反射和jdbc完成.
Hibernate:它执行上面的概念.
JPA:它比ORM高出一步.它的高级API和规范使得不同的ORM工具可以实现,从而为开发人员提供了将实现从一个ORM更改为另一个ORM的灵活性(例如,如果应用程序使用JPA api并实现hibernate.将来它可以切换到IBatis如果需要的话.但另一方面,如果应用程序直接使用没有JPA平台的Hibernate锁定实现,那么switiching将是一项艰巨的任务)
可以有/不带JPA规范的ORM实现.例如,根据hibernate部分下的这个链接,只有Hibernate 3.2及更高版本提供了Java Persistence API的实现.
我开始使用JPA了,我对JPA实现(EclipseLink,TopLink,Hibernate等)究竟是什么感到困惑.
我理解JPA的理论角色,但各种实现的目的是什么?这些选择之间是否存在显着差异,例如DB连接器/驱动程序?哪个是初学者最好的?
我可能会选择EclipseLink,因为这是我读过的大多数文献都使用的.
当我在做Hibernate独立程序示例时,在我的脑海中使用@Entity注释创建了一点混乱.
这里我的问题是,我有一个来自javax.persistence包的@Entity的持久化类,然后它工作正常但是当我用Hibernate API替换@Entity注释(即来自org.hibernate.annotations包)然后它给出了org.hibernate.MappingException :未知实体:com.jetti.test.Employee
给予更多解释,非常感谢.
当我在大学学习网络编程时,他们告诉我们关于休眠的问题.
我们使用了一段时间,我甚至有机会在一家公司的真实场景中使用它近8个月.现在我完全切换到Java EE 6(我爱上了:)),我使用JPA来满足我的ORM需求.
我使用它已经有几个月,但我真的不明白一个和另一个之间有什么区别.为什么有些人说一个或另一个更好或更差?我在两者中做映射和注释的方式几乎相同......
也许你可以解决我的一些疑虑:
- 每个的优点和缺点是什么?
- Hibernate使用JPA还是相反(它们是否相互依赖)?
- 从功能的角度来看,有哪些功能没有另一个?
- 两者之间有其他差异吗?
我发现了很多类似的问题
但没有人回答我的下一个问题.经典的hibernate方法org.hibernate.SessionFactory和JPA javax.persistence.EntityManager实现之间有什么不同?我听说,这个JPA实现使用org.hibernate.SessionFactory和像包装一样工作,是真的吗?
当我的应用程序出现乐观并发问题时,我的应用程序中抛出StaleObjectStateException而不是OptimisticLockException(因为我读到我应该期待这个).无需发布代码,因为它是最基本的并发问题 - 时间戳列中的错误版本.
我怎么会得到OptimisticLockException,而不是另一个?
我在Hibernate Domain Pojo Objects的项目和基于注释的配置中使用Hibernate.对于基于注释的配置,我们有两个选项
javax.persistence.*org.hibernate.annotations.*目前我们使用JPA基于注解的配置为我们的POJO文件和Hibernate SessionFactory的一样,会话等原生API打开的会话和执行DB操作.
我有这些问题:
我已经找到了一些关于如何使用泛型构建Hibernate DAO的教程,但它们都使用EntityManager而不是使用SessionFactory.我的问题是如何使用泛型构建DAO SessionFactory.到目前为止我有以下内容:
接口:
public interface GenericDao<T> {
public void save(T obj);
public void update(T obj);
public void delete(T obj);
public T findById(long id);
}
Run Code Online (Sandbox Code Playgroud)
类:
@Repository
public class GenericDaoImpl<T> implements GenericDao<T> {
@Autowired
private SessionFactory sessionFactory;
public void save(T obj) {
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(obj);
tx.commit();
} catch (HibernateException e) {
if(tx != null)
tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
public void …Run Code Online (Sandbox Code Playgroud) 我是JPA的新手.根据我的理解,JPA本身不能做持久性.它需要JPA Provider才能将数据保存到数据库中.
JPA Provider:它是包含JPA flavor(javax.persistence)的供应商产品.例如Eclipselink,Toplink,Hibernate等 http://www.tutorialspoint.com/jpa/jpa_orm_components.htm
因此,任何想要使用JPA进行持久化的应用程序都必须使用Eclipselink,Toplink,Hibernate等提供程序.它是否正确?
我试图使用JPA与Spring MVC,mySql.我从这里了解JPA和Hibernate有什么区别?JPA可以单独使用,但是大多数Web资源都将其描述为仅需要实现的规范.那么我可以在没有EclipseLink,Hibernate等持久性提供程序的情况下使用JPA,如果是,那么如何?
这两个选项中哪个更好,以便我可以在 Spring Boot 项目中使用大部分休眠功能。
1) 自定义存储库 + 休眠代码 2) 扩展 JpaRepository 或 CrudRepository 接口。
使用 Spring Data JPA 是否提供相同的控制(例如缓存、条件查询等)?
需要您的宝贵建议/意见。
java ×10
hibernate ×9
jpa ×9
orm ×3
spring ×2
concurrency ×1
dao ×1
eclipse ×1
eclipselink ×1
exception ×1
generics ×1
java-ee ×1
jpa-2.0 ×1
mysql ×1
persistence ×1
spring-boot ×1
spring-mvc ×1