JPA 提示Entity 设置主键问题

来源:互联网 发布:java工程师要多少钱 编辑:程序博客网 时间:2024/04/27 13:52

给jPA实体加关联的时候,提示需要给实体类设置主键,


后来设置了主键出现了一系列问题,如:

[EL Info]: 2013-07-27 14:35:23.229--ServerSession(1685078409)--EclipseLink, version: Eclipse Persistence Services - 2.1.1.v20100817-r8050[EL Info]: 2013-07-27 14:35:23.602--ServerSession(1685078409)--file:/F:/360云盘/MyData/project/localEshop/WebRoot/WEB-INF/classes/_localEshop login successful[EL Warning]: 2013-07-27 14:35:24.023--ServerSession(1685078409)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.1.v20100817-r8050): org.eclipse.persistence.exceptions.DatabaseExceptionInternal Exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'MARKETPRICE' in 'field list'Error Code: 1054Call: SELECT ID, MARKETPRICE, SUPPLIERID, TOTALSALES, TAGID, IMAGESURL, OURPRICE, PRODUCTSTATUSID, NAME, CATALOGID, QUANTITY, COMMENT FROM eshop.product WHERE (ID = ?)bind => [2]Query: ReadObjectQuery(name="product" referenceClass=Product )Exception in thread "main" Local Exception Stack: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.1.v20100817-r8050): org.eclipse.persistence.exceptions.DatabaseExceptionInternal Exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'MARKETPRICE' in 'field list'Error Code: 1054Call: SELECT ID, MARKETPRICE, SUPPLIERID, TOTALSALES, TAGID, IMAGESURL, OURPRICE, PRODUCTSTATUSID, NAME, CATALOGID, QUANTITY, COMMENT FROM eshop.product WHERE (ID = ?)bind => [2]Query: ReadObjectQuery(name="product" referenceClass=Product )at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:683)at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:526)at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:529)


高了半天没搞定,后来发现是竟然是注解的位置问题,起初把主键直接加到属性上导致报错,如:

    @OneToOne(mappedBy = "product")    private Orderitem orderitem;public Orderitem getOrderitem() {return orderitem;}


之后,改为并去掉手动添加的ID注解,解决问题:
    private Orderitem orderitem;    @OneToOne(mappedBy = "product")public Orderitem getOrderitem() {return orderitem;}public void setOrderitem(Orderitem orderitem) {this.orderitem = orderitem;}



总结上面的教训,要使用jpa,还真得先好好学习学习注解知识!!!


原创粉丝点击