我在Hibernate和MySQL中有單表繼承的問題。 我的代碼很簡單:字段列表中的單表繼承和Unknwon列
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="VEHICLE_TYPE")
@Table(name="VEHICLE")
public abstract class Vehicle {
@Id
@Column(name="VEHICLE_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long vehicleId;
@Column(name="MAKE")
private String make;
@Column(name="MODEL")
private String model;
//setters and getters
}
和:
@Entity
public class Car extends Vehicle {
@Column(name="BODY")
private String body;
//setters and getters
}
我也有一個服務來獲取所有汽車:
@Override
public List<Car> getCars() {
TypedQuery<Car> query = em.createQuery("SELECT c FROM Car c", Car.class);
return query.getResultList();
}
當我運行應用程序,並嘗試獲取列表我得到以下控制檯輸出:
休眠:選擇car0_.VEHICLE_ID爲VEHICLE_2_6_, car0_.MAKE爲MAKE3_6_,car0_.MODEL爲MODEL4_6_,car0_.BODY作爲BODY7_6_從車輛car0_其中car0_.VEHICLE_TYPE = '車'
警告:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL錯誤:1054 ,SQLSTATE:42S22 錯誤:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 在「字段列表」
Hovever未知列「car0_.BODY」,我的表模型已制定此列,並使用該服務工作正常,沒有繼承。 任何想法我錯過了什麼?
您是否嘗試將輸出SQL執行到數據庫本身(即通過Workbench)?你有同樣的結果嗎? – Ish
好點。它不起作用,我得到了同樣的錯誤:「字段列表」中的未知列'car0_.BODY' – jarosik