为了账号安全,请及时绑定邮箱和手机立即绑定

使用JPA访问字段时出错。我该如何解决这个问题?

使用JPA访问字段时出错。我该如何解决这个问题?

缥缈止盈 2022-08-03 16:09:29
尝试将值插入我的表时,我收到此错误org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private int com.app.demo.model.Customer.id] by reflection for persistent property [com.app.demo.model.Customer#id] : com.app.demo.model.Customer@6d1c6e1ejavax.persistence.PersistenceException: org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private int com.app.demo.model.Customer.id] by reflection for persistent property [com.app.demo.model.Customer#id] : com.app.demo.model.Customer@6d1c6e1e这是我的客户表。我正在使用MySql Workbench,我试图将我的值插入到这里。我正在使用这个类将值插入到表中@Entity@Table(name="customer")public class Customer {@Id@GeneratedValue@Column(name = "customer_id", unique = true, nullable = false)private int id;@Column(name="first_name")private String firstName;@Column(name="last_name")private String lastName;@Column(name="street_address")private String address;@Column(name="city")private String city;@Column(name="state")private String state;@Column(name="zip_code")private String zipcode;@Column(name="email")private String email;@Column(name="paypal_email")private String paypalEmail;// getters and setters这就是我如何将值插入到表中// Set customer valuesCustomer valuedCustomer = new Customer();valuedCustomer.setFirstName(firstName);valuedCustomer.setLastName(lastName);valuedCustomer.setAddress(address);valuedCustomer.setCity(city);valuedCustomer.setState(state);valuedCustomer.setZipcode(zip);valuedCustomer.setEmail(email);// insert customer info into the customer tableEntityManagerFactory emf = Persistence.createEntityManagerFactory("pu");EntityManager em = emf.createEntityManager();em.getTransaction().begin();em.persist(valuedCustomer);em.getTransaction().commit();
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

尝试使用自动或身份策略。喜欢:

@GeneratedValue(strategy = GenerationType.IDENTITY)


查看完整回答
反对 回复 2022-08-03
?
Qyouu

TA贡献1786条经验 获得超11个赞

下面是实体类中的 ID 字段定义


@Id

@GeneratedValue

@Column(name = "customer_id", unique = true, nullable = false)

private int id;

此处的 ID 字段是唯一的,而不是空的。因此,您必须在插入期间提供有关ID字段的数据。


首先,使用注释作为我们的配置方法只是一种方便的方法,而不是应对无休止的XML配置文件。


注释继承自 ,指示下面的成员字段是当前实体的主键。因此,你的Hibernate和spring框架以及你可以基于这个注释做一些工作。有关详细信息,请查看javadoc以获取Id@Idjavax.persistence.Idreflect


注释是配置指定列(字段)的增量方式。@GeneratedValue


例如,在使用 时,可以在表的定义中指定使其自增量,然后使用Mysqlauto_increment


@GeneratedValue(strategy = GenerationType.IDENTITY)


查看完整回答
反对 回复 2022-08-03
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信