【发布时间】:2015-10-15 13:17:03
【问题描述】:
我在 Hibernate 和 MySQL 中遇到单表继承问题。 我的代码很简单:
@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();
}
当我运行应用程序并尝试获取汽车列表时,我得到以下控制台输出:
休眠:从 VEHICLE car0_ 中选择 car0_.VEHICLE_ID 作为 VEHICLE_2_6_,car0_.MAKE 作为 MAKE3_6_,car0_.MODEL 作为 MODEL4_6_,car0_.BODY 作为 BODY7_6_,其中 car0_.VEHICLE_TYPE='Car'
警告:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL 错误:1054,SQLState:42S22 错误:org.hibernate.engine.jdbc.spi.SqlExceptionHelper - '字段列表'中的未知列'car0_.BODY'
然而,我的表模型有这个列,而且这个服务在没有继承的情况下可以正常工作。 有什么想法我想念什么?
【问题讨论】:
-
您是否尝试将输出 SQL 执行到数据库本身(即通过 Workbench)?你得到了同样的结果吗?
-
好点。它不起作用,我得到同样的错误:'字段列表'中的未知列'car0_.BODY'
标签: mysql hibernate inheritance