首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Hibernate 單向一對一映射主鍵關聯失敗:改用唯一外鍵關聯模式

     編輯:程式設計疑難解答

錯誤

org.hibernate.TypeMismatchException: Provided id of the wrong type for class Car
Expected: class java.lang.String , got class java.lang.Long

原因

<one-to-one name="brand" class="CarBrand"/> 默認為**主鍵關聯**,要求 Car 和 CarBrand 共享相同主鍵值 (Long vs String 類型不匹配)。實際業務中 Car.brandId 是外鍵關聯 CarBrand.brandId。

修正映射

<!-- Car.hbm.xml -->
<many-to-one name="brand" class="CarBrand" 
             column="brandId" unique="true" />
  • many-to-one 表示多方 (Car) 關聯一方 (CarBrand)。
  • unique="true" 加唯一約束,語義上等價於一對一。
  • column="brandId" 指定外鍵列。

生成 SQL 對比

  • 主鍵關聯:WHERE c.carId = cb.brandId (錯誤)。
  • 外鍵關聯:WHERE c.brandId = cb.brandId (正確)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved