当前位置: 首页 > 知识库问答 >
问题:

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

申黎明
2023-03-14

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

请参阅下面的详细信息:*内部异常:javax.Persistence.persistenceException:Exception[EclipseLink-28018](Eclipse Persistence.Exceptions.EntityManagerSetupException异常描述:Predeployment of PersistenceUnit[default]失败。内部异常:异常[EclipseLink-7161](Eclipse Persistence Services-2.4.2.v20130514-5956486):org.Eclipse.Persistence.exceptions.ValidationException异常描述:实体类[类A]没有指定主键。它应该定义@id、@embeddedid或@idclass。如果您已经使用这些注释定义了PK,那么请确保您的实体类层次结构中没有混合访问类型(字段和属性都注释了)。*

@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;
    }
}

BharosaBaseBean类:

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>

共有1个答案

葛宪
2023-03-14

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

 类似资料:
  • 谁能告诉我,如何创建一个没有主键的实体? 谢了。

  • 问题内容: 我有一个具有以下结构的数据库: 当我尝试创建EntityProperty类时 我得到以下异常: 我知道JPA实体必须具有主键,但是由于无法控制的原因,我无法更改数据库架构。是否可以创建将与这样的数据库模式一起工作的JPA(hibernate)实体? 问题答案: 我猜您有一个组合键,其中的外键是。如果是这样,则可以按如下所示进行映射:

  • 我正在使用Spring Boot 1.5.10和Spring Boot starter数据jpa。我有一个暂存表和一个生产表,它们都有相同的结构,只是表名不同。列包括: 复合键1 复合键2 复合键3 列A 列B c列 我收到以下错误: 原因:org.hibernate.注释异常:没有为实体指定标识符:com.foo.bar.StagingTbl 我有一个复合主键,类定义为: 我的具体类: 标识符应

  • 异常[EclipseLink-48](Eclipse Persistence Services-2.3.2.v20111125-r10461):org.Eclipse.Persistence.exceptions.Description异常描述:字段[flight.connid]存在多个可写映射。只有一个可以定义为可写,所有其他的都必须指定为只读。映射:org.eclipse.persistenc

  • 有一些相关的问题,比如: null 我的存储库 我错过了什么?

  • 问题内容: 我想创建一个类,该类可以映射到使用JPA本机查询从数据库中提取的结果。有没有办法将没有基础表的实体映射到结果?我提到这个链接,使得它的hibernate。可以使用JPA代替吗? 这是我要为其映射结果的班级。 问题答案: JPA 2.1规范定义了将结果从本机查询返回到非实体类的方法 您应该检出标题 3.10.16.2返回非托管实例, 尤其是 3.10.16.2.2构造函数结果 使用 Sq