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

JPA错误:实体没有定义主键属性

南门星河
2023-03-14
@Entity
@Table(name="INTI_SCHEME_TOKEN")
public class IntiSchemeToken implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name="CREATED_BY")
    private String createdBy;

    @Temporal( TemporalType.DATE)
    @Column(name="CREATED_ON")
    private Date createdOn;

    @Column(name="SCH_ID")
    private BigDecimal schId;

    @Column(name="TOKEN_ID")
    private BigDecimal tokenId;

    public IntiSchemeToken() {
    }

    public String getCreatedBy() {
        return this.createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public Date getCreatedOn() {
        return this.createdOn;
    }

    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    public BigDecimal getSchId() {
        return this.schId;
    }

    public void setSchId(BigDecimal schId) {
        this.schId = schId;
    }

    public BigDecimal getTokenId() {
        return this.tokenId;
    }

    public void setTokenId(BigDecimal tokenId) {
        this.tokenId = tokenId;
    }



} 

谁能告诉我,如何创建一个没有主键的实体?

谢了。

共有1个答案

狄富
2023-03-14

你不能。实体必须具有唯一的、不可变的ID。它不必定义为数据库中的主键,但字段或字段集必须唯一标识该行,且其值不得更改。

因此,如果实体中的一个字段或实体中的一组字段满足这些条件,请将其(或它们)设置为实体的ID。例如,如果一个用户无法在同一天创建两个实例,您可以将[createdOn,createdBy]设置为实体的ID。

当然,这是一个糟糕的解决方案,您确实应该更改架构,并在实体中添加一个自动生成的单列ID。

 类似资料:
  • 我有一个实体类,jpa正在抛出一个验证异常,说明指定了主键。我不明白为什么。 请参阅下面的详细信息:*内部异常:javax.Persistence.persistenceException:Exception[EclipseLink-28018](Eclipse Persistence.Exceptions.EntityManagerSetupException异常描述:Predeployment

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

  • 我有一个实体,它的复合主键由两个字段组成,其中一个也是复合外键的一部分。 背景:我有实体<代码>人员 、<代码>区域 和<代码>会话 。 与具有多对多关系,使用称为“和实体。 所以,我有,主键为(,)。本身是的外键。 也有一个字段。我希望(,)是的复合外键。 我的PersonSession代码: } 这看起来不错,它在数据库中创建了所有正确的关系。当我尝试插入个性化会话对象时,问题就出现了——ar

  • 我有一个关于将弱实体从e-r模型转移到sql表的问题。具体地说,我使用的是MySQL。 假设我有表hotels,其中每个酒店都有主键id,名为id。

  • 问题内容: 以下两个声明的确切区别是什么 B是拥有方 A是拥有的一面 在“普通SQL”中考虑这一点,我认为这与拥有两个具有另一个表的外键的表相同。我不明白的是,指定哪个实体是拥有方(即使用’mappedBy’属性)的效果​​如何。这实际上实现了什么,因为我不相信普通的SQL中有等效的功能。 问题答案: 在JPA 2.0规范,第2.9节,写: 关系可以是双向的或单向的。双向关系既具有拥有侧又具有逆(