hibernate 對映無主鍵的資料庫表
阿新 • • 發佈:2019-02-20
做東西發現數據庫查出來的資料是重複資料,如果有3條記錄就重複第一條記錄3次,後來發現是表無主鍵,且hibernate對映檔案必須有id屬性,搜了搜發現要使用符合主鍵的方法.................以下轉載自一個帖子裡內容:
MyEclipse自動生成的那個貌似比較複雜 會多用一個聯合主鍵的POJO類 我寫了一個相對簡單的 只需要對映的POJO就OK了 希望有幫助
比如 我MySQL中有一個表定義如下 沒有定義主鍵
CREATE TABLE `test`.`NoId`(`name` VARCHAR(45),`age` INTEGER)ENGINE = InnoDB;
那麼對應的POJO寫成
public class NoId implements Serializable {
private String name = null;
private Long age = null;
// 構造子和getter setter
......
// 注意這種情況下 我們需要重寫equals和hashCode
public boolean equals(Object object) {
......
}
public int hashCode() {
......
}
}
然後對應的對映檔案如下
<hibernate-mapping>
<class name="fox.math.kmust.NoId" table="noid" lazy="true">
<!-- 這裡是將表的所有屬性作為聯合主鍵 -->
<composite-id>
<key-property name="name"/>
<key-property name="age"/>
</composite-id>
</class>
</hibernate-mapping>
*****************總結下來就是hibernate使用聯合主鍵操作無主鍵表*************************
使用複合主鍵時,發生classcastException異常,原因複合主鍵類沒有被序列化。
如上,進行序列化就可以了:
public class NoId implements Serializable {