测试,Hibernate的实体
@Entity @Table(name="user_test") public class UserTest implements Serializable {private static final long serialVersionUID = 1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id")private Integer id;@Column(name="name")private String name;@Column(name="age")private Integer age;@Column(name="address")private String address;
12345678910111213141516171819测试接口
@Query(value="select * from UserTest where name = ?",nativeQuery=true) List<UserTest> queryByNameUseSQL(String name); 12
使用@Query注解,参数为nativeQuery=true,意思是使用正常的sql语句,如果没有使用nativeQuery=true,那就使用Hibernate语句
Hibernate: select * from UserTest where name = ? 2019-05-28 10:34:31.712 WARN 9232 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1146, SQLState: 42S02 2019-05-28 10:34:31.713 ERROR 9232 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : Table 'sbm.usertest' doesn't exist 2019-05-28 10:34:31.744 INFO 9232 --- [ Thread-14] o.s.w.c.s.GenericWebApplicationContext : Closing org.springframework.web.context.support.GenericWebApplicationContext@fa21b3e: startup date [Tue May 28 10:34:18 CST 2019]; root of context hierarchy 2019-05-28 10:34:31.775 INFO 9232 --- [ Thread-14] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2019-05-28 10:34:31.785 INFO 9232 --- [ Thread-14] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closed 123456
异常分析:
说是这个Hibernate语句: select * from UserTest where name = ? 有问题
接着往下看,具体报什么异常(去百度一下)
SQL Error: 1146, SQLState: 42S02
再往下
Table ‘sbm.usertest’ doesn’t exist,说是table不存在,那就把usertest拿去数据库查询一下,看有没有这个表(注:我的是没有的)
解决过程:
回到@Query注解 ,因为使用了参数 nativeQuery=true ,那就是说使用原生SQL语句,那么就不能使用对象作为表名,所以要用真正的表名 user_test
修改一下,再测试