JPA 实体没有主键?

2022-09-02 05:11:24

我有一个实体类:

@Entity
@Table(name="CMC_MAP_SERVER_INFO")
@NamedQuery(name="CmcMapServerInfo.getMapServer", query="SELECT c FROM CmcMapServerInfo c")
public class CmcMapServerInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name="APPLICATION_NAME")
    private String applicationName;

    private String remarks;

    @Column(name="SERVER_IP")
    private String serverIp;

    @Column(name="SERVER_NAME")
    private String serverName;

    @Column(name="SERVER_PORT")
    private short serverPort;

    public CmcMapServerInfo() {
    }

我收到以下错误:

Entity class [class cdot.oss.cmsat.conf.ejb.entity.CmcMapServerInfo] has no primary key specified.

我在网上阅读并发现实体必须定义主键。但是我在这里的表只是一行表。它只是用来保存系统配置。

因此,我唯一想做的查询就是检查该行是否存在,然后获取该行并更新它。

我的列是服务器Ip,端口,服务器的名称

我应该如何继续删除此错误?


答案 1

我也有这个问题,没有PK的消息。

在 Oracle 中,您可以使用 ROWID 列,该列始终存在于任何表中。

喜欢这个:

@Id
@Column(name="ROWID")
String rowid;

希望它有帮助...


答案 2

JPA 2.0 Specification

  • 实体类必须使用批注进行批注。Entity
  • 实体类必须具有无参数构造函数。
  • 实体类不能是最终的
  • 实体类必须实现接口。Serializable
  • 实体类必须具有唯一的、不可变的ID

否则,您不能这样做。


推荐