尝试在表中插入值时,出现此错误
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
javax.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 values
Customer 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 table
EntityManagerFactory emf = Persistence.createEntityManagerFactory("pu");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(valuedCustomer);
em.getTransaction().commit();
编辑:
我的客户表
我的用户表(我对该表进行了单元测试)
答案 0 :(得分:1)
尝试使用“自动”或“身份”策略。 像:
@GeneratedValue(strategy = GenerationType.IDENTITY)
答案 1 :(得分:0)
这是您的实体类中的ID字段定义
@Id
@GeneratedValue
@Column(name = "customer_id", unique = true, nullable = false)
private int id;
此处的ID字段是唯一的,并且不为空。因此,您必须在插入过程中在ID字段上提供数据。
首先,将注释用作我们的configure方法只是一种便捷的方法,而不是应对无休止的XML配置文件。
@Id
注释是从javax.persistence.Id
继承的,表示下面的成员字段是当前实体的主键。因此,您的Hibernate和spring框架以及您可以基于此注释执行一些reflect
工作。有关详细信息,请检查javadoc for Id
@GeneratedValue
注释用于配置指定列(字段)的递增方式。
例如,在使用Mysql
时,您可以在表的定义中指定auto_increment
以使其自增,然后使用
@GeneratedValue(strategy = GenerationType.IDENTITY)