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

尝试将值插入我的表时,我收到此错误


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,我试图将我的值插入到这里。

http://img.mukewang.com/62ea2d51000136f806220053.jpg

我正在使用这个类将值插入到表中


@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();


缥缈止盈
浏览 159回答 2
2回答

郎朗坤

尝试使用自动或身份策略。喜欢:@GeneratedValue(strategy = GenerationType.IDENTITY)

Qyouu

下面是实体类中的 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java