博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate视图无主键解决办法
阅读量:6454 次
发布时间:2019-06-23

本文共 2084 字,大约阅读时间需要 6 分钟。

使用hibernate创建视图对应的entity时,一直报 No identifier specified for entity 错。查询发现,hibernate映射表的时候entity必须有主键。

但是视图没有主键。解决办法:

给视图创建联合主键,具体操作如下:

1)创建一个包含联合主键的类,并在类上注释@Embeddable

/*** user_role视图的联合主键*/@Embeddablepublic class UserRoleCompositeId implements Serializable{    private static final long serialVersionUID = -3304319243957837925L;    @Column(name = "userid")    int userid;    @Column(name = "sysid")    int sysid;    @Column(name = "sysname")    String sysname;    public int getUserid() {        return userid;    }    public void setUserid(int userid) {        this.userid = userid;    }    public int getSysid() {        return sysid;    }    public void setSysid(int sysid) {        this.sysid = sysid;    }    public String getSysname() {        return sysname;    }    public void setSysname(String sysname) {        this.sysname = sysname;    }    @Override    public boolean equals(Object o) {        if(o instanceof UserRoleCompositeId){            UserRoleCompositeId key = (UserRoleCompositeId)o ;            if(this.userid == key.userid && this.sysname.equals(key.sysname) && this.sysid==key.sysid){                return true ;            }        }        return false ;    }    @Override    public int hashCode() {        return this.sysname.hashCode();    }}

2)在entity类中引用联合主键,并在引用上注解

@Entity@Table(name = "user_role")public class UserRoleView {    @Column(name = "systype")    String systype;    @Column(name = "perkey")    String perkey;    @Id    private UserRoleCompositeId userRoleCompositeId;    public UserRoleCompositeId getUserRoleCompositeId() {        return userRoleCompositeId;    }    public void setUserRoleCompositeId(UserRoleCompositeId userRoleCompositeId) {        this.userRoleCompositeId = userRoleCompositeId;    }    public String getSystype() {        return systype;    }    public void setSystype(String systype) {        this.systype = systype;    }    public String getPerkey() {        return perkey;    }    public void setPerkey(String perkey) {        this.perkey = perkey;    }}

问题即可得到完美解决

转载于:https://my.oschina.net/wuyiyi/blog/1503837

你可能感兴趣的文章
intellij maven配置与使用
查看>>
SpringMVC文件下载与JSON格式
查看>>
Q:图像太大,在opencv上显示不完全
查看>>
修正锚点跳转位置 避免头部fixed固定部分遮挡
查看>>
linux下ping不通的解决方法
查看>>
利用ItextPdf、core-renderer-R8 来生成PDF
查看>>
irc操作小记
查看>>
JAVA 与 PHP 的不同和相同
查看>>
建立Ftp站点
查看>>
NavigationController的使用
查看>>
多线程编程之Windows环境下创建新线程
查看>>
CentOS 7使用systemctl如何补全服务名称
查看>>
Unity3D NGUI 给button按钮添加单间事件
查看>>
密码的校验.大小写字母,数字,特殊字符中的至少3种
查看>>
ios 不同sdk4.3 6.0版本号,关于方法的兼容性的通用方法
查看>>
Shell编程学习总结
查看>>
构建之法阅读笔记02
查看>>
Webstorm常用快捷键备忘
查看>>
js滚动加载到底部
查看>>
Redis慢查询,redis-cli,redis-benchmark,info
查看>>