首页 新闻 会员 周边 捐助

hibernate 设置表实体出现:No identifier specified for entity: Domain.DbUser

1
悬赏园豆:50 [已解决问题] 解决于 2019-11-22 12:03

表SQL:

create table u01
(
USER_NAME varchar(50) binary not null,
USER_PASSWORD varchar(50),
USER_EMAIL varchar(50) not null,
USER_SHOWNAME varchar(50),
USER_LEVER int,
USER_AGE int,
USER_SEX varchar(10),
USER_REMARK varchar(255),
USER_STATUS varchar(5),
primary key (USER_NAME, USER_EMAIL)
);

 

DbUser类:

@Entity
@Table(name="u01")
public class DbUser {
@Column(name="USER_NAME")
private String USER_NAME;
private String USER_PASSWORD;
private String USER_EMAIL;
private String USER_SHOWNAME;
private Integer USER_LEVER;
private Integer USER_AGE;
private String USER_SEX;
private String USER_REMARK;
private String USER_STATUS;

@OneToMany(targetEntity=DbUpload_Info.class,mappedBy="DbUser")
private Set<DbUpload_Info> upload = new HashSet<>();

...<省略getter和setter>

已经:<mapping class="Domain.DbUser"/>

请问这样设置正确吗?

隐语者的主页 隐语者 | 初学一级 | 园豆:5
提问于:2018-04-24 00:45

已经解决问题:多个主键要写多个@ID标注
@Entity
@Table(name="u01")
public class DbUser implements Serializable {
@Id
@Column(name="USER_NAME")
private String USER_NAME;
@Id
@Column(name="USER_EMAIL")
private String USER_EMAIL;
@Column(name="USER_PASSWORD")
private String USER_PASSWORD;
private String USER_SHOWNAME;
private Integer USER_LEVER;
private Integer USER_AGE;
private String USER_SEX;
private String USER_REMARK;
private String USER_STATUS;

隐语者 6年前
< >
分享
最佳答案
1

主键只有一个,最好是id

收获园豆:50
月在心上 | 菜鸟二级 |园豆:252 | 2018-04-25 07:30

可是一般要确定数据的唯一性,需要出现多个主键,这种情况应该没办法避免吧。

真实的项目中,每一个数据表表结构只有一个主键吗?

我是一个学生,没有接触过真实的公司项目。

隐语者 | 园豆:5 (初学一级) | 2018-04-26 14:38

@隐语者: 不好意思,最近没怎么登录。你所说的这个问题其实很简单,确定数据的唯一性,只需要一个主键就好了,就比如学生系统中每一个学生的信息,我们把学号看成一个主键,这个主键是唯一的,或者你再想想一个学生可能是两个学号吗?其次学生属于不同的班级,他会有一个外键来管理这些班级的。所以说主键唯一,外键不唯一。如果不明白的话,可以继续问我

月在心上 | 园豆:252 (菜鸟二级) | 2018-04-27 16:54
其他回答(1)
0

没有为实体指定标识符,主键注解

DanBrown | 园豆:1321 (小虾三级) | 2018-04-25 17:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册