想了解Maven+Spring+Hibernate:hibernate3-maven-pluginhbm2ddl失败,原因为“原因:java.lang.NullPointerException”的新动
想了解Maven + Spring + Hibernate:hibernate3-maven-pluginhbm2ddl失败,原因为“原因:java.lang.NullPointerException”的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于createEntityManager在org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus处引发java.lang.NullPointerException、Hibernate / JPA-访问SingularAttribute参数时出现NullPointerException、Hibernate Envers OneToMany Cascade.ALL org.hibernate.HibernateException:找到多个具有给定标识符的行、Hibernate Search + Spring Boot:java.lang.IllegalStateException:没有可用的事务性EntityManager的新知识。
本文目录一览:- Maven + Spring + Hibernate:hibernate3-maven-pluginhbm2ddl失败,原因为“原因:java.lang.NullPointerException”
- createEntityManager在org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus处引发java.lang.NullPointerException
- Hibernate / JPA-访问SingularAttribute参数时出现NullPointerException
- Hibernate Envers OneToMany Cascade.ALL org.hibernate.HibernateException:找到多个具有给定标识符的行
- Hibernate Search + Spring Boot:java.lang.IllegalStateException:没有可用的事务性EntityManager
Maven + Spring + Hibernate:hibernate3-maven-pluginhbm2ddl失败,原因为“原因:java.lang.NullPointerException”
由于当前在Spring中对Hibernate
4的支持不足,我不得不将Hibernate从版本4降级到版本3(具体来说是3.3.2GA),现在该项目在尝试使用hbm2ddl生成架构时无法构建。这个错误太模糊了,谷歌并没有带来太多收益。
这是我的pom.xml:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>example</artifactId> <version>1.0-SNAPSHOT</version> <name>Spring + Hibernate Example</name> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>3.1.2.RELEASE</spring.version> <hibernate.version>3.3.2.GA</hibernate.version> <java.version>1.6</java.version> </properties> <build> <extensions> <extension> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>2.0.0</version> </extension> <extension> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </extension> </extensions> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <!-- Run "mvn hibernate3:hbm2ddl" to generate schema --> <groupId>org.codehaus.mojo</groupId> <artifactId>hibernate3-maven-plugin</artifactId> <version>3.0</version> <executions> <execution> <id>generate-ddl</id> <phase>process-classes</phase> <goals> <goal>hbm2ddl</goal> </goals> </execution> </executions> <configuration> <hibernatetool destdir="${project.build.directory}/generated"> <annotationConfiguration configurationfile="hibernate.cfg.xml"/> <hbm2ddl export="false" create="true" update="true" format="format" outputfilename="schemaDiff.ddl"/> </hibernatetool> </configuration> </plugin> </plugins> </build> <dependencies> <!-- Inversion of Control: Spring Dependencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> <exclusions> <!-- Exclude the problematic commons-logging --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!-- Object Relational Mapping: Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency> <!-- Hibernate Annotations Dependencies --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.5.6-Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-commons-annotations</artifactId> <version>3.3.0.ga</version> </dependency> <!-- Database: HSQLDB --> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>2.0.0</version> </dependency> <!-- Connection Pool: C3P0 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <!-- Second-level caching: Ehcache --> <dependency> <groupId>ehcache</groupId> <artifactId>ehcache</artifactId> <version>1.2.3</version> </dependency> <!-- Logging: SLF4j & Log4J --> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.6.6</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.6</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <scope>runtime</scope> </dependency> <!-- Testing: JUnit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <!-- Testing: Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> </dependencies></project>
跑步
mvn hibernate3:hbm2ddl
失败于
[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl(default-cli) on project example: There was an error creating the AntRun task.NullPointerException -> [Help 1]
完整的堆栈跟踪为:
[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (default-cli) on project example: There was an error creating the AntRun task. NullPointerException -> [Help 1]org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (default-cli) on project example: There was an error creating the AntRun task. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)Caused by: org.apache.maven.plugin.MojoExecutionException: There was an error creating the AntRun task. at org.codehaus.mojo.hibernate3.AbstractHibernateMojo.execute(AbstractHibernateMojo.java:84) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 19 moreCaused by: java.lang.NullPointerException at org.codehaus.plexus.configuration.DefaultPlexusConfiguration.add(DefaultPlexusConfiguration.java:174) at org.codehaus.plexus.configuration.DefaultPlexusConfiguration.addChild(DefaultPlexusConfiguration.java:150) at org.codehaus.mojo.hibernate3.util.PlexusConfigurationUtils.setHibernateConfiguration(PlexusConfigurationUtils.java:289) at org.codehaus.mojo.hibernate3.util.PlexusConfigurationUtils.parseHibernateTool(PlexusConfigurationUtils.java:67) at org.codehaus.mojo.hibernate3.AbstractHibernateToolMojo.getConfiguration(AbstractHibernateToolMojo.java:60) at org.codehaus.mojo.hibernate3.AbstractHibernateMojo.execute(AbstractHibernateMojo.java:76) ... 21 more
希望有人可以对此有所启发!
答案1
小编典典在尝试使havennate模型使maven引导数据库时,我遇到了相同的问题[(在maven test的Generate databaseschema(Hibernate)中描述的问题)。
我使hbm2ddl在以下版本的组合中工作得很好:Hibernate(运行时):4.1.7.Final hibernate3-maven-
plugin:3.6.10.Final,指定的插件版本2.2 hibernate3-maven-plugin的hibernate-
validator依赖关系:4.2 .0。最终
在pom的相关部分下方:
版本:
<properties> <org.hibernate.version>4.1.7.Final</org.hibernate.version> <hibernate.maven.plugin.version>3.6.10.Final</hibernate.maven.plugin.version></properties>
hibernate3-maven-plugin的定义:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>hibernate3-maven-plugin</artifactId> <version>2.2</version> <configuration> <components> <component> <name>hbm2ddl</name> <implementation>jpaconfiguration</implementation> </component> </components> <componentProperties> <outputfilename>schema.ddl</outputfilename> <create>true</create> <export>false</export> <format>true</format> <drop>false</drop> <jdk5>true</jdk5> <propertyfile>target/test-classes/application.properties</propertyfile> <skip>${skipTests}</skip> </componentProperties> </configuration> <executions> <execution> <phase>process-classes</phase> <goals> <goal>hbm2ddl</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.maven.plugin.version}</version> <exclusions> <exclusion> <groupId>cglib</groupId> <artifactId>cglib</artifactId> </exclusion> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.maven.plugin.version}</version> <exclusions> <exclusion> <groupId>cglib</groupId> <artifactId>cglib</artifactId> </exclusion> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.2.0.Final</version> </dependency> </dependencies> </plugin> </plugins></build>
运行时依赖项:
<dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${org.hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${org.hibernate.version}</version> </dependency></dependencies>
我希望这有帮助。
createEntityManager在org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus处引发java.lang.NullPointerException
部署hibernate应用程序时出现堆栈跟踪
java.lang.NullPointerException
at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:72) [hibernate-core-4.0.0.Beta1.jar:4.0.0.Beta1]
at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:114) [hibernate-core-4.0.0.Beta1.jar:4.0.0.Beta1]
at org.hibernate.engine.transaction.internal.jta.CMTTransaction.join(CMTTransaction.java:149) [hibernate-core-4.0.0.Beta1.jar:4.0.0.Beta1]
at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1197) [hibernate-entitymanager-4.0.0.Beta1.jar:4.0.0.Beta1]
at org.hibernate.ejb.AbstractEntityManagerImpl.postInit(AbstractEntityManagerImpl.java:170) [hibernate-entitymanager-4.0.0.Beta1.jar:4.0.0.Beta1]
at org.hibernate.ejb.EntityManagerImpl.<init>(EntityManagerImpl.java:90) [hibernate-entitymanager-4.0.0.Beta1.jar:4.0.0.Beta1]
at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:112) [hibernate-entitymanager-4.0.0.Beta1.jar:4.0.0.Beta1]
at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:107) [hibernate-entitymanager-4.0.0.Beta1.jar:4.0.0.Beta1]
at com.mycompany.myapp.common.persistence.HibernateUtil.<clinit>(HibernateUtil.java:53) [classes:]
at com.mycompany.myapp.common.businessobjects.ServerSettings.GetServerSettings(ServerSettings.java:247) [classes:]
at com.mycompany.myapp.common.servlet.SecurityFilter.init(SecurityFilter.java:55) [classes:]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3245) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3836) [jbossweb-7.0.0.CR4.jar:7.0.0.Final]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.0.Final.jar:7.0.0.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765)
at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_26]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_26]
at java.lang.Thread.run(Thread.java:680) [:1.6.0_26]
它在我的HibernateUtil类中命中了NPE,第53行是创建EntityManager的行-
看起来createEntityManager()返回的是null。代码看起来像
private static EntityManagerFactory entityManagerFactory = null;
private static EntityManager entityManager = null;
static {
try {
entityManagerFactory = Persistence.createEntityManagerFactory("primary");
entityManager = entityManagerFactory.createEntityManager();
我的persistence.xml看起来像
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="primary"> <jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.ejb.interceptor.session_scoped" value="com.mycompany.myapp.common.persistence.BusinessObjectInterceptor"/>
</properties>
有什么想法为什么createEntityManager()给NPE?
Hibernate / JPA-访问SingularAttribute参数时出现NullPointerException
我正在尝试对Hibernate 5.0.7.Final使用JPA2类型安全的条件查询。
...
criteria.where( builder.equal( root.get(SingularAttribute.attr),value ));
//where parameters are
//criteria.where( builder.equal( root.get(Person_.name),"Can" ));
...
root.get总是抛出异常NullPointerException
。元模型类Person_
用于Person
通过产生org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
。
在未填充的JPA /
Hibernate静态元模型属性中提出了类似的问题-NullPointerException,但这一次这两个类位于同一包中。
堆栈跟踪:
java.lang.NullPointerException
at org.hibernate.jpa.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:123)
我的代码:
我用来确保它们将具有的接口getId();
。
package it.unibz.db.hibernate.model;
public interface ModelInterface<PK extends Serializable> extends Serializable {
PK getId();
}
模型类
package it.unibz.db.hibernate.model;
@Entity
@Table(name ="person")
public class Person implements ModelInterface<Integer> {
@Id
private Integer id;
private String name;
public Integer getId() {
return id;
}
//other getter and setters
}
生成的元模型Person_类
package it.unibz.db.hibernate.model;
@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(Person.class)
public abstract class Person_ {
public static volatile SingularAttribute<Person,String> name;
public static volatile SingularAttribute<Person,Integer> id;
}
我随PersonDao继承的通用DAO类
public class GenericDao<E extends ModelInterface<PK>,PK extends Serializable> implements DaoInterface<E,PK> {
private Class<E> type;
public GenericDao(Class<E> type) {
this.type = type;
//called as super(ClassName.class); eg. super(Person.class);
}
public List<E> readBy(SingularAttribute column,String value) throws Exception {
EntityManager em = HibernateUtil.getEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<E> criteria = builder.createQuery(type);
Root<E> root = criteria.from(type);
criteria.select(root);
criteria.where( builder.equal( root.get(column),value ));
List<E> entityList = em.createQuery(criteria).getResultList();
em.close();
return entityList;
}
}
我的一些依赖
-
hibernate-c3p0 5.0.7。最终版
-
休眠实体管理器5.0.7。最终版
-
PostgreSQL 9.4.1207.jre7
-
hibernate-jpamodelgen 5.0.7。最终版
编辑:
在main方法中运行此代码有效
EntityManager em = HibernateUtil.getEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Person> criteria = builder.createQuery(Person.class);
Root<Person> root = criteria.from(Person.class);
criteria.select(root);
criteria.where( builder.equal( root.get(Person_.name),"Can" ));
List<Person> entityList = em.createQuery(criteria).getResultList();
//do stuff with entityList
但是方法中包含的相同代码将引发NullPointerException
。
public List<Person> readBy(SingularAttribute column,String value) throws Exception {
log.debug("Reading entity by");
EntityManager em = HibernateUtil.getEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Person> criteria = builder.createQuery(Person.class);
Root<Person> root = criteria.from(Person.class);
criteria.select(root);
criteria.where( builder.equal( root.get(column),value ));
List<Person> entityList = em.createQuery(criteria).getResultList();
em.close();
return entityList;
}
因此看来问题出在将SingularAttribute
参数传递给方法readBy(SingularAttribute column,String
value)
。
我在main中测试了此代码,并打印了 false
EntityManager em = HibernateUtil.getEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Person> criteria = builder.createQuery(Person.class);
Root<Person> root = criteria.from(Person.class);
System.out.println(root.get(Person_.name) == null); //false
同时,此引发InvocationTargetException
是由NullPointerException
at
引起的root.get(column)
。
//invoked as personDao.test(Person_.name) from main
public void test(SingularAttribute column) {
EntityManager em = HibernateUtil.getEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Person> criteria = builder.createQuery(Person.class);
Root<Person> root = criteria.from(Person.class);
System.out.println(root.get(column) == null); //InvocationTargetException
}
这是应该做的吗?如何将SingularAttribute
对象作为参数传递给方法?
Hibernate Envers OneToMany Cascade.ALL org.hibernate.HibernateException:找到多个具有给定标识符的行
好的,问题是当你尝试
Car car = new Car();
car.setBrand("Alfa Romeo");
Set<Car> cars = new HashSet<>();
cars.add(car);
Driver driver = new Driver();
driver.setCars(cars);
em.persist(driver);
单向一对多,hibernate执行3条sql语句:
- 插入驱动程序 (id) 值 (?)
- 插入汽车(品牌,id)值(?,?)
- 更新汽车设置 driver_id=?其中 id=?
切换到双向关系
@Entity
@Audited
public class Car {
@Id
@GeneratedValue
private Long id;
private String brand;
@ManyToOne
private Driver driver;
// Constructor,getters and setters omitted
}
@Entity
@Audited
public class Driver {
@Id
@GeneratedValue
private Long id;
@OneToMany(cascade = CascadeType.ALL,mappedBy = "driver")
@AuditJoinTable(name = "car_aud")
private Set<Car> cars = new HashSet();
public void setCars(Set<Car> cars) {
books.forEach(b -> b.setDriver(this));
this.cars.addAll(cars);
}
// Constructor,getters and setters omitted
}
使 Hibernate 只创建 2 个 SQL 语句:
- 插入驱动程序 (id) 值 (?)
- 插入汽车 (driver_id,brand,id) 值 (?,?,?)
结果相同。所以CAR_AUD表中不会有歧义。
Hibernate Search + Spring Boot:java.lang.IllegalStateException:没有可用的事务性EntityManager
我正在尝试按照本教程在Spring Boot应用程序中设置Hibernate Search 。问题是我在启动时遇到错误:
Caused by: java.lang.IllegalStateException: No transactional EntityManager available
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:279) ~[spring-orm-5.0.7.RELEASE.jar:5.0.7.RELEASE]
at com.sun.proxy.$Proxy110.unwrap(Unknown Source) ~[na:na]
at org.hibernate.search.jpa.Search.getSession(Search.java:55) ~[hibernate-search-orm-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.jpa.Search.getFullTextEntityManager(Search.java:49) ~[hibernate-search-orm-5.9.0.Final.jar:5.9.0.Final]
at mz.api.spring.service.HibernateSearchService.initializeHibernateSearch(HibernateSearchService.java:26) ~[classes/:na]
at mz.api.spring.config.HibernateSearchConfig.hibernateSearchService(HibernateSearchConfig.java:25) ~[classes/:na]
at mz.api.spring.config.HibernateSearchConfig$$EnhancerBySpringCGLIB$$6594e5b4.CGLIB$hibernateSearchService$0(<generated>) ~[classes/:na]
at mz.api.spring.config.HibernateSearchConfig$$EnhancerBySpringCGLIB$$6594e5b4$$FastClassBySpringCGLIB$$ab525f18.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-5.0.7.RELEASE.jar:5.0.7.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) ~[spring-context-5.0.7.RELEASE.jar:5.0.7.RELEASE]
at mz.api.spring.config.HibernateSearchConfig$$EnhancerBySpringCGLIB$$6594e5b4.hibernateSearchService(<generated>) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE]
... 24 common frames omitted
我不明白是什么原因导致了这个问题。
相关代码:
@SpringBootApplication
@EnableJpaRepositories(basePackages = "mz.api.spring.repository")
@EntityScan(basePackages = "mz.api.hibernate.model")
@EnableTransactionManagement
public class Application {
private final static Logger LOGGER = LogManager.getLogger(Application.class);
public static void main(String[] args) {
LOGGER.debug("Running application ..");
SpringApplication.run(Application.class,args);
}
}
..
@Service
public class HibernateSearchService {
private final EntityManager entityManager;
@Autowired
public HibernateSearchService(EntityManager entityManager) {
this.entityManager = entityManager;
}
public void initializeHibernateSearch() {
try {
FullTextEntityManager fullTextEntityManager = getFullTextEntityManager(this.entityManager);
fullTextEntityManager.createIndexer().startAndWait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
..
@Configuration
public class HibernateSearchConfig {
private final EntityManager entityManager;
@Autowired
public HibernateSearchConfig(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Bean
HibernateSearchService hibernateSearchService() {
HibernateSearchService hibernateSearchService = new HibernateSearchService(this.entityManager);
hibernateSearchService.initializeHibernateSearch();
return hibernateSearchService;
}
}
今天的关于Maven + Spring + Hibernate:hibernate3-maven-pluginhbm2ddl失败,原因为“原因:java.lang.NullPointerException”的分享已经结束,谢谢您的关注,如果想了解更多关于createEntityManager在org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus处引发java.lang.NullPointerException、Hibernate / JPA-访问SingularAttribute参数时出现NullPointerException、Hibernate Envers OneToMany Cascade.ALL org.hibernate.HibernateException:找到多个具有给定标识符的行、Hibernate Search + Spring Boot:java.lang.IllegalStateException:没有可用的事务性EntityManager的相关知识,请在本站进行查询。
本文标签: