JPA错误:实体类没有指定主键



我有一个实体类和jpa抛出一个验证异常说主键指定。我不明白为什么。

请看下面的细节:*内部异常:javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.4.2.v20130514-5956486): org.eclipse.persistence.exceptions.EntityManagerSetupException异常描述:Predeployment of PersistenceUnit [default]失败。内部异常:Exception [EclipseLink-7161] (Eclipse Persistence Services - 2.4.2.v20130514-5956486): org.eclipse.persistence.exceptions.ValidationException异常描述:实体类[class A]没有指定主键。它应该定义一个@Id, @EmbeddedId或@IdClass。如果您使用这些注释中的任何一种定义了PK,那么请确保您的实体类层次结构中没有混合访问类型(注释了字段和属性)。*

实体类A:

@Access(AccessType.FIELD)
@Entity
@Cache(disableHits=true)
@Table(name="VT_INVALID_USERS")
public class A extends BharosaBaseBean implements java.io.Serializable {
@SequenceGenerator(name="USERS_SEQ", allocationSize=1)
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="USERS_SEQ")
@Column(name="USER_ID")
protected Long userId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_TIME")
protected Date createTime = new Date();
public void setUserId( Long userId ) {
this.userId = userId;
}
public Long getUserId( ) {
return this.userId;
}
}

barosabasebean类:

public abstract class BharosaBaseBean implements java.io.Serializable {
abstract public Long getPKId();
}

持久性文件:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
<mapping-file>orm.xml</mapping-file>
<properties>
<property name="eclipselink.logging.level" value="FINE"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="javax.persistence.jdbc.url" value=" <url>"/>
<property name="javax.persistence.jdbc.user" value="<user>"/>
<property name="javax.persistence.jdbc.password" value="<pwd>"/>
<property name="eclipselink.jdbc.read-connections.max" value="5"/>
<property name="eclipselink.jdbc.read-connections.min" value="5"/>
<property name="eclipselink.jdbc.write-connections.max" value="10"/>
<property name="eclipselink.jdbc.wirte-connections.min" value="10"/>
<property name="eclipselink.session.customizer" value="oracle.security.uas.core.common.toplink.SessionCustomizerForCLIRetryLogic"/>
<property name="oaam.eclipselink.conn.health.validated.on.error" value="true"/>
<property name="oaam.eclipselink.query.retry.attempt.count" value="3"/>
<property name="oaam.eclipselink.delay.between.reconnect.attempts" value="5000"/>
<property name="oaam.eclipselink.ping.sql" value="select 1 from dual"/>
</properties>
</persistence-unit>
</persistence>

也许您可以尝试将基类添加到persistence.xml文件中。

最新更新