Sid*_*kha 12 java database entity jpa ejb-3.0
我有一个实体类:
@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() {
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Entity class [class cdot.oss.cmsat.conf.ejb.entity.CmcMapServerInfo] has no primary key specified.
Run Code Online (Sandbox Code Playgroud)
我在线阅读并发现实体必须定义主键.但我这里的桌子只是一排桌子.它只是用来保存系统配置.
因此,我只想查询该行是否存在,然后获取该行并更新它.
我的列是serverIp,port,服务器的名称.
我该如何处理删除此错误?
Jos*_*rez 22
我有这个问题以及没有PK的消息.
在Oracle中,您可以使用ROWID列,该列始终存在于任何表中.
像这样:
@Id
@Column(name="ROWID")
String rowid;
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你...
Zaw*_* oo 20
Entity注释.Serializable接口.ID否则,你不能.
小智 6
数据库中的每个实体对象都是唯一标识的.表示没有主键的表的另一种方法是使用复合主键使用其所有列,或者其中一些表示候选键:
@Entity
public class TableWithoutId {
@EmbeddedId EmbeddableTableWithoutId id;
/* Getters an Setters... */
//Here you can implement @Transient delegates to the Getters an Setters of "id".
}
@Embeddable
Class EmbeddableTableWithoutId {
int columnA;
long columnB;
/* Getters an Setters... */
}
Run Code Online (Sandbox Code Playgroud)
也许你会遇到[按ID选择]的问题:
entityManager.find(TableWithoutId.class, id);//it can throws NonUniqueResultException or anything like that...
Run Code Online (Sandbox Code Playgroud)
保重,快乐!
| 归档时间: |
|
| 查看次数: |
41041 次 |
| 最近记录: |