Java 考虑定义一个名为“γx27”的bean;实体管理工厂&x27;在您的配置Spring引导中
下面是我的代码 春季开机入门类Java 考虑定义一个名为“γx27”的bean;实体管理工厂&x27;在您的配置Spring引导中,java,spring-mvc,spring-boot,spring-data,h2,Java,Spring Mvc,Spring Boot,Spring Data,H2,下面是我的代码 春季开机入门类 @SpringBootApplication @EnableJpaRepositories("com.test.assertmanagementdigital4.repositories") @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class}) @ComponentScan("com.test.asser
@SpringBootApplication
@EnableJpaRepositories("com.test.assertmanagementdigital4.repositories")
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
@ComponentScan("com.test.assertmanagementdigital4")
public class AssertManagementDigital4Application {
public static void main(String[] args) {
SpringApplication.run(AssertManagementDigital4Application.class, args);
}
}
@Entity
@Table(name="ShopDetails")
public class Shop {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String shopName;
private Address address;
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
@OneToMany
@JoinColumn(name="add_Id")
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Shop [id=" + id + ", shopName=" + shopName + ", address=" + address + "]";
}
}
@Service
public class ShopService {
@Autowired
private ShopRepository shopRepository;
public void addShopDetails(Shop shop) {
shopRepository.save(shop);
}
}
#spring.datasource.type=org.apache.commons.dbcp.BasicDataSource
spring.datasource.url:jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username:sa
spring.datasource.password:
spring.datasource.driver-class-name:org.h2.Driver
spring.datasource.platform:h2
# enable H2 web console and set url for web console
# http://localhost:8080/console
spring.h2.console.enabled:true
spring.h2.console.path:/console
控制器
@RestController
公共类商店管理员{
@Autowired
private ShopService shopService;
@RequestMapping(value="/shops",method=RequestMethod.POST)
public void shopDetails(@RequestBody Shop shop){
shopService.addShopDetails(shop);
}
}
实体
@SpringBootApplication
@EnableJpaRepositories("com.test.assertmanagementdigital4.repositories")
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
@ComponentScan("com.test.assertmanagementdigital4")
public class AssertManagementDigital4Application {
public static void main(String[] args) {
SpringApplication.run(AssertManagementDigital4Application.class, args);
}
}
@Entity
@Table(name="ShopDetails")
public class Shop {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String shopName;
private Address address;
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
@OneToMany
@JoinColumn(name="add_Id")
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Shop [id=" + id + ", shopName=" + shopName + ", address=" + address + "]";
}
}
@Service
public class ShopService {
@Autowired
private ShopRepository shopRepository;
public void addShopDetails(Shop shop) {
shopRepository.save(shop);
}
}
#spring.datasource.type=org.apache.commons.dbcp.BasicDataSource
spring.datasource.url:jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username:sa
spring.datasource.password:
spring.datasource.driver-class-name:org.h2.Driver
spring.datasource.platform:h2
# enable H2 web console and set url for web console
# http://localhost:8080/console
spring.h2.console.enabled:true
spring.h2.console.path:/console
spring数据存储库
@Repository
public interface ShopRepository extends CrudRepository<Shop,Long>{
}
应用程序属性
@SpringBootApplication
@EnableJpaRepositories("com.test.assertmanagementdigital4.repositories")
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
@ComponentScan("com.test.assertmanagementdigital4")
public class AssertManagementDigital4Application {
public static void main(String[] args) {
SpringApplication.run(AssertManagementDigital4Application.class, args);
}
}
@Entity
@Table(name="ShopDetails")
public class Shop {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String shopName;
private Address address;
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
@OneToMany
@JoinColumn(name="add_Id")
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "Shop [id=" + id + ", shopName=" + shopName + ", address=" + address + "]";
}
}
@Service
public class ShopService {
@Autowired
private ShopRepository shopRepository;
public void addShopDetails(Shop shop) {
shopRepository.save(shop);
}
}
#spring.datasource.type=org.apache.commons.dbcp.BasicDataSource
spring.datasource.url:jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username:sa
spring.datasource.password:
spring.datasource.driver-class-name:org.h2.Driver
spring.datasource.platform:h2
# enable H2 web console and set url for web console
# http://localhost:8080/console
spring.h2.console.enabled:true
spring.h2.console.path:/console
build.gradle
buildscript {
ext {
springBootVersion = '1.5.4.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
runtime('com.h2database:h2')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
我知道这个问题已经有人发布了,但这并没有解决我的问题。我仍然得到以下错误,你能告诉我这个问题出了什么问题吗
Description:
Field shopRepository in com.test.assertmanagementdigital4.service.ShopService required a bean named 'entityManagerFactory' that could not be found.
Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.
如果删除排除自动配置,则会出现以下错误
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:1628) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at com.test.assertmanagementdigital4.AssertManagementDigital4Application.main(AssertManagementDigital4Application.java:20) [bin/:na]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:882) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
... 16 common frames omitted
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: address, for columns: [org.hibernate.mapping.Column(shop)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:431) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:398) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.mapping.Property.isValid(Property.java:225) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:595) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.mapping.RootClass.validate(RootClass.java:265) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:329) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:443) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
... 22 common frames omitted
如果您取消自动配置,那么您应该自己提供它 见示例:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws URISyntaxException {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(your_datasource);
entityManagerFactoryBean.setPackagesToScan(package_to_scan);
//additional config of factory
return entityManagerFactoryBean;
}
@Bean(name = "transactionManager")
public PlatformTransactionManager jpaTransactionManager(EntityManagerFactory entityManagerFactory) throws URISyntaxException {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
如果您取消自动配置,那么您应该自己提供它 见示例:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws URISyntaxException {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(your_datasource);
entityManagerFactoryBean.setPackagesToScan(package_to_scan);
//additional config of factory
return entityManagerFactoryBean;
}
@Bean(name = "transactionManager")
public PlatformTransactionManager jpaTransactionManager(EntityManagerFactory entityManagerFactory) throws URISyntaxException {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
如果您有这段代码,只需删除它
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
如果您有这段代码,只需删除它
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
此问题是由于tomcat连接池造成的
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
org.apache.tomcat
TomcatJDBC
它解决了我的问题。此问题是由于tomcat连接池造成的。请尝试在pom.xml中添加以下依赖项
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
org.apache.tomcat
TomcatJDBC
它解决了我的问题。您明确禁用了JPA的自动配置,因此显然没有自动配置的
EntityManagerFactory
。请删除排除或手动定义EntityManagerFactory
。此外,您的spring.datasource
属性几乎没有用处,您也排除了auto数据源的配置。请检查上面的更新。不要发布堆栈跟踪的片段,发布完整的stracktrace.M.Deinum我发布了完整的StackTrace。您不能将字段和set/get方法上的批注组合在一起。请使用字段级别或set/get方法,而不是两者都使用。此外,错误在您的地址中,而不是在此处发布的类中。您明确禁用了JPA的自动配置,因此显然没有自动配置的EntityManagerFactory
。请删除排除项或手动定义EntityManagerFactory
。此外,您的spring.datasource
属性非常无用,而且您还排除了dat的自动配置a来源。请检查上面的更新。不要发布堆栈跟踪的片段,发布完整的stracktrace.M.Deinum我发布了完整的StackTrace。您不能在字段和set/get方法上组合批注。请使用字段级别或set/get方法,而不能同时使用这两种方法。此外,错误出现在您的地址
类中,未在此处发布。您好,我有相同的I假设。我已经添加了entityManagerFactory和jpaTransactionManager,但在此之后,它给了我一个错误,即“创建名为'entityManagerFactory'的bean时出错”:请求的bean当前正在创建中:是否存在无法解决的循环引用?”.有什么建议吗?@DhiralKaniya,我不确定你的具体情况,但如果你共享stacktrace,可以尝试提供帮助。如果问题仍然存在,你可以创建新问题并与我共享。我知道,你的例外情况意味着你在bean中定义了循环引用。我想你的entityManagerFactory
取决于某些情况具有entityManagerFactory
依赖关系的。您好,我也有同样的问题。我添加了entityManagerFactory和jpaTransactionManager,但之后,它给我一个错误,即“创建名为'entityManagerFactory'的bean时出错”:请求的bean当前正在创建中:是否存在无法解决的循环引用?”.有什么建议吗?@DhiralKaniya,我不确定你的具体情况,但如果你共享stacktrace,可以尝试提供帮助。如果问题仍然存在,你可以创建新问题并与我共享。我知道,你的例外情况意味着你在bean中定义了循环引用。我想你的entityManagerFactory
取决于某些情况一个有entityManagerFactory
dependency.Thank.花了大约40分钟,然后找到了这个。谢谢。花了大约40分钟,然后找到了这个。它以前工作过,但在我的当前项目中不工作。有什么建议吗?它以前工作过,但在我的当前项目中不工作。有什么建议吗??