【发布时间】:2019-10-13 05:08:27
【问题描述】:
我有一个 Spring boot 应用程序 (2.1.5),使用 Hibernate (5.1) 作为我的 JPA 提供程序,使用 Hibernate Dialect Oracle10gDialect 访问 Oracle 11.2.0.4 DB
我已经创建了一个这样的仓库
@Repository
public interface VehStoRepository extends CrudRepository<VehStoEntity, Long>
{
}
我的实体如下
@Entity @Table(name = "VEH_STO", schema = "MySchema")
public class VehStoEntity
{
@Id
private long eventNo;
private Long stoType;
Basic @Column(name = "STO_TYPE", nullable = true, precision = 0)
public Long getStoType()
{
return stoType;
}
public void setStoType(Long stoType)
{
this.stoType = stoType;
}
...
}
为简洁起见,我已经排除了许多其他字段等。我有 Intellj Idea 生成的持久性映射。
现在,当调用
vehStoRepository.findAll();
我收到以下错误:
原因: org.springframework.dao.InvalidDataAccessResourceUsageException:可以 不提取结果集; SQL [不适用];嵌套异常是 org.hibernate.exception.SQLGrammarException:无法提取结果集
...
原因:java.sql.SQLSyntaxErrorException: ORA-00904: "VEHSTOENT0_"."STOTYPE": 标识符无效
日志显示的我的 SQL 语句是:
休眠:从 MYSCHEMA.VEH_STO vehstoent0_ 中选择 vehstoent0_.stoType 作为 stoType25_0_
我的问题是:hibernate 是否实际上将 ent0 添加到实体名称中,或者这只是奇怪的日志记录,或者这是错误的原因?这是因为我没有为所有表生成一个 ORM 映射模式,只是为我需要的那个?我做错了什么?
【问题讨论】:
标签: hibernate oracle11g spring-data-jpa spring-boot-jpa