Spring Jpa实体实例化失败:org.springframework.orm.jpa.JpaSystemException: No default constructor for entity

No default constructor for entity(实体没有默认构造器)
当前错误是在我使用JAP的查询语句时出现的,在查询到对应数据时需要创建对应的实体进行保存,由于我没有生成无参数构造方法,导致无法进行实例化然后就造成了当前异常的出现。
在这里插入图片描述
因为我使用的工具是idea,idea创建类的时候如果你不自己生成构造方法时,默认会给你创建一个无参数构造方法,导致我没有创建无参数构造方法的习惯,凑巧的是当前实体类我生成了带参数的构造方法,导致idea默认生成的无参数构造方法被覆盖了
在这里插入图片描述

完整错误信息
org.springframework.orm.jpa.JpaSystemException: No default constructor for entity: : com.zndz.common.entity.task.data.DataGoodsPicture; nested exception is org.hibernate.InstantiationException: No default constructor for entity: : com.XXXX.XXXX.XXXX.XXXX.data.DataGoodsPicture

解决方式
增加一个无参数的构造方法即可
在这里插入图片描述

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
要在Spring Boot中使用Hibernate JPA,您可以使用Spring Boot提供的HibernateJpaConfiguration类进行配置。以下是一个简单的示例,演示如何使用Hibernate JPASpring Boot配置JDBC连接: 1. 添加Hibernate JPA和MySQL JDBC的依赖项: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> ``` 2. 在application.properties文件中添加以下属性: ``` spring.datasource.url=jdbc:mysql://localhost:3306/db_name spring.datasource.username=db_username spring.datasource.password=db_password spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update ``` 3. 创建一个HibernateJpaConfiguration类,继承自Spring Boot提供的HibernateJpaConfiguration类: ``` @Configuration @EnableTransactionManagement public class MyHibernateJpaConfiguration extends HibernateJpaConfiguration { @Autowired private DataSource dataSource; @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(dataSource); em.setPackagesToScan("com.example.demo.entity"); JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); Properties properties = new Properties(); properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect"); em.setJpaProperties(properties); return em; } @Bean public PlatformTransactionManager transactionManager() { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); return transactionManager; } } ``` 4. 确保您的实体类在指定的包中,并且使用@Entity和@Id注释进行注释: ``` @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(name = "name") private String name; @Column(name = "email") private String email; // getters and setters } ``` 5. 在您的服务类中使用@Autowired注释自动装配EntityManager: ``` @Service public class UserService { @Autowired private EntityManager entityManager; @Transactional public User save(User user) { entityManager.persist(user); return user; } @Transactional(readOnly = true) public User findById(Long id) { return entityManager.find(User.class, id); } // other methods } ``` 这个例子展示了如何使用Hibernate JPASpring Boot配置JDBC连接。您可以根据自己的需要进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Acmen-zym

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值