使用 none 主键 table 的 Hibernate 映射
Hibernate mapping with none primary key table
MySQL 数据库中有一个没有任何主键的 table。我想使用休眠来访问 java 的数据端。但是,hibernate 无法解析映射文件。其他 table 已正确映射。这个问题是主键 none 的原因吗?我必须至少创建一个主键来映射此 table 吗?或者还有别的吗?
Table
CREATE TABLE `users` ( `extension` varchar(20) NOT NULL DEFAULT '', `password` varchar(20) DEFAULT NULL, `name` varchar(50) DEFAULT NULL, `voicemail` varchar(50) DEFAULT NULL, `ringtimer` int(3) DEFAULT NULL, `noanswer` varchar(100) DEFAULT NULL, `recording` varchar(50) DEFAULT NULL, `outboundcid` varchar(50) DEFAULT NULL, `sipname` varchar(50) DEFAULT NULL, `mohclass` varchar(80) DEFAULT 'default', `noanswer_cid` varchar(20) DEFAULT '', `busy_cid` varchar(20) DEFAULT '', `chanunavail_cid` varchar(20) DEFAULT '', `noanswer_dest` varchar(255) DEFAULT '', `busy_dest` varchar(255) DEFAULT '', `chanunavail_dest` varchar(255) DEFAULT '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1
Exception:
org.hibernate.boot.InvalidMappingException: Could not parse mapping document: Users.hbm.xml (RESOURCE)
根据 Hibernate 规范,每个实体都应该有 Id,但如果您无法将 Id 添加到当前 table,您仍然可以创建 class User
而无需 Entity
注释,并将本机查询的结果映射到此 class.
MySQL 数据库中有一个没有任何主键的 table。我想使用休眠来访问 java 的数据端。但是,hibernate 无法解析映射文件。其他 table 已正确映射。这个问题是主键 none 的原因吗?我必须至少创建一个主键来映射此 table 吗?或者还有别的吗?
Table
CREATE TABLE `users` ( `extension` varchar(20) NOT NULL DEFAULT '', `password` varchar(20) DEFAULT NULL, `name` varchar(50) DEFAULT NULL, `voicemail` varchar(50) DEFAULT NULL, `ringtimer` int(3) DEFAULT NULL, `noanswer` varchar(100) DEFAULT NULL, `recording` varchar(50) DEFAULT NULL, `outboundcid` varchar(50) DEFAULT NULL, `sipname` varchar(50) DEFAULT NULL, `mohclass` varchar(80) DEFAULT 'default', `noanswer_cid` varchar(20) DEFAULT '', `busy_cid` varchar(20) DEFAULT '', `chanunavail_cid` varchar(20) DEFAULT '', `noanswer_dest` varchar(255) DEFAULT '', `busy_dest` varchar(255) DEFAULT '', `chanunavail_dest` varchar(255) DEFAULT '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1
Exception:
org.hibernate.boot.InvalidMappingException: Could not parse mapping document: Users.hbm.xml (RESOURCE)
根据 Hibernate 规范,每个实体都应该有 Id,但如果您无法将 Id 添加到当前 table,您仍然可以创建 class User
而无需 Entity
注释,并将本机查询的结果映射到此 class.