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继承策略,见参考资料
在使用Hibernate进行查询时遇到一个SQL错误,错误信息提到未知列dtype。这通常是由于实体类继承导致的,Hibernate在处理继承时会添加dtype字段来区分子类。为解决这个问题,可以避免直接继承实体类,而是创建一个非实体类C,将共享属性移到C中,并使用@MappedSuperclass注解来指定继承策略。这样可以避免在数据库表中手动添加dtype列的需要。

2834

被折叠的 条评论
为什么被折叠?



