java.sql.SQLSyntaxErrorException: Unknown column ‘course0_.dtype’ in ‘field list’
关键词:
- hibernate
- SQL Error: 1054
- SQLState: 42S22
- dtype
问题描述
使用hibernate执行查询时报以下错误
SQL Error: 1054, SQLState: 42S22
Unknown column 'A0_.dtype' in 'field list'
问题复现
实体类A
@Table
@Entity
public class A{
...
}
实体类B
@Table
@Entity
public class B extends A {
...
}
当A进行查询时将触发上述错误
原因
实体类被继承时默认会添加dtype字段用于管理子类名
解决方案
- 避免继承实体类A
- 为实体类A对应的数据库表添加对应的列
- A、B继承非实体类C,将需要继承的属性提取至C,并为C添加@MappedSuperclass
- 使用注解指定hibernate继承策略,见参考资料