Java 使用SpringFramework时EntityManager始终为空
你好 我目前正在从事一个Maven+Spring+Hibernate项目。实际上,这只是一个测试项目,只是为了熟悉Spring如何使用Hibernate(+Maven)。我已经设置并准备了必要的依赖项。i、 e.Spring的Java 使用SpringFramework时EntityManager始终为空,java,spring,entitymanager,Java,Spring,Entitymanager,你好 我目前正在从事一个Maven+Spring+Hibernate项目。实际上,这只是一个测试项目,只是为了熟悉Spring如何使用Hibernate(+Maven)。我已经设置并准备了必要的依赖项。i、 e.Spring的appcontext.xml,Hibernate的persistence.xml,JPA/persistence/Hibernate的实体和DAO对象 在调试期间,可以观察到EntityManager总是null。我不知道是什么原因造成的,因为我做了ff: 在我的控制器上自
appcontext.xml
,Hibernate的persistence.xml
,JPA/persistence/Hibernate的实体和DAO对象
在调试期间,可以观察到EntityManager
总是null
。我不知道是什么原因造成的,因为我做了ff:
applicationContext.xml
@Repository
entityManagerFactory
、transactionManager
和vendorAdapter
定义为myapplicationContext.xml
再次,希望有人能对此提供反馈。提前谢谢 你甚至还没有开始春天
Sample s = new Sample();
Sample
是一个Springbean。您必须首先启动应用程序上下文并从那里获取bean。见@nico_ekito的答案:
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");
Sample s = context.getBean(Sample.class);
s.persist();
}
启动上下文后(可能会导致一些错误),请更正以下内容:
- 删除此项:
用以下内容注释字段:tinfoh = new TblFileinfoHome();
@Autowired private TblFileinfoHome tinfoh;
- 您不应该是自动关联实体类:
@Autowired //remove this annotation private TblFileinfo tinfo;
- 你甚至还没有开始春天
Sample s = new Sample();
Sample
是一个Springbean。您必须首先启动应用程序上下文并从那里获取bean。见@nico_ekito的答案:
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");
Sample s = context.getBean(Sample.class);
s.persist();
}
启动上下文后(可能会导致一些错误),请更正以下内容:
- 删除此项:
用以下内容注释字段:tinfoh = new TblFileinfoHome();
@Autowired private TblFileinfoHome tinfoh;
- 您不应该是自动关联实体类:
@Autowired //remove this annotation private TblFileinfo tinfo;
public class MavenSpringHibernate {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"classpath:/PATH/TO/applicationContext.xml"});
Sample s = context.getBean(Sample.class);
s.persist();
}
}
您不在主类中加载Spring上下文:
public class MavenSpringHibernate {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext(new String[] {"classpath:/PATH/TO/applicationContext.xml"});
Sample s = context.getBean(Sample.class);
s.persist();
}
}
+1,我一直专注于自动布线问题,甚至没有意识到Spring应用程序上下文根本没有启动:-)。+1,我一直专注于自动布线问题,甚至没有意识到Spring应用程序上下文根本没有启动:-)。谢谢。但是,“Sample s=context.getBean(Sample.class);”是不允许的。。。我是说我正在吃一些errors@jaysonpryde:什么错误?您使用的是哪个版本的Spring和Java?编译错误或运行时异常?@Tomasz-鉴于我没有在applicationContext.xml中将示例类声明为bean,我想我不能这样做。。。错误是“BeanFactory类型中的getBean(String)方法不适用于参数(类)”,我遵循了ApplicationContext和Autowiring中的建议。但是,我在这行“ApplicationContext context=new ClassPathXmlApplicationContext(“classpath:/ApplicationContext.xml”);“异常是-exception in thread”main“org.springframework.beans.factory.BeanCreationException:创建名为“tblFileinfoHome”的bean时出错:持久性字段的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[applicationContext.xml]中定义的名为“entityManagerFactory”的bean时出错:调用init方法失败;嵌套的异常是java.lang.AbstractMethodError:org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;谢谢你。但是,“Sample s=context.getBean(Sample.class);”是不允许的。。。我是说我正在吃一些errors@jaysonpryde:什么错误?您使用的是哪个版本的Spring和Java?编译错误或运行时异常?@Tomasz-鉴于我没有在applicationContext.xml中将示例类声明为bean,我想我不能这样做。。。错误是“BeanFactory类型中的getBean(String)方法不适用于参数(类)”,我遵循了ApplicationContext和Autowiring中的建议。但是,我在这行“ApplicationContext context=new ClassPathXmlApplicationContext(“classpath:/ApplicationContext.xml”);“异常是-exception in thread”main“org.springframework.beans.factory.BeanCreationException:创建名为“tblFileinfoHome”的bean时出错:持久性字段的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[applicationContext.xml]中定义的名为“entityManagerFactory”的bean时出错:调用init方法失败;嵌套的异常是java.lang.AbstractMethodError:org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;