2017-08-08 6 views
0

MySQLデータベースにプライマリキーのないテーブルがあります。私は、Javaのデータ側にアクセスするために休止状態を使用したい。しかし、hibernateはマッピングドキュメントを解析できませんでした。他のテーブルは適切にマッピングされています。この問題は主キーのどれも原因ではありませんか?このテーブルをマップするために少なくとも1つの主キーを作成する必要がありますか?それとも他に何かありますか?プライマリキーテーブルを持たないHibernateマッピング

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 

例外:

org.hibernate.boot.InvalidMappingException:マッピング・ドキュメントを解析できませんでした:Users.hbm.xml(RESOURCE)

+0

プライマリキーのないテーブル? –

+0

テーブルにプライマリキーがありません –

+0

プライマリキーは必要ありません。 Users.hbm.xmlにエラーがあるようです。 –

答えて

0

Hibernateの仕様によれば、すべてのエンティティにはIdが必要ですが、現在のテーブルにIDを追加する可能性がない場合は、アノテーションなしでクラスUserを作成してネイティブクエリの結果をこのクラスにマップできます。

+0

ネイティブクエリを使用して結果をマップするにはどうすればよいですか?あなたはそれを説明できますか? –

+0

'SqlResultSetMapping'アノテーションを使用すると、クラスフィールドとテーブルフィールドの接続を指定することができます。ここでいくつかの例を見ることができます:https://www.thoughts-on-java.org/result-set-mapping-basics/ –

+0

ありがとうあなたを助けるために –

関連する問題