2017-02-24 58 views
0

我对弹簧启动非常陌生。看来我可以连接到Oracle数据库但无法获取数据。作为一个新手,首先我已经尝试了正确的凭据,没有错误被抛出。另一方面,我改变了我的密码,并得到无效的密码错误。所以我认为我的联系似乎是作出了?无法通过弹簧启动从oracle获取数据

我的全堆栈跟踪可以在这里找到:spring boot hibernate query invalid user error

当我从其他的帖子看到,春季以来列名转换成骆驼命名策略可能是一个问题。虽然,在我的情况下,它似乎并不是一个问题,因为我使用

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 

它阻止弹簧更改列名称。

这是我得到的查询:

Hibernate: select * from (select post0_.id as id1_0_0_, user1_.id as id1_1_1_, post0_.author_id as author_id5_0_0_, post0_.body as body2_0_0_, post0_.date as date3_0_0_, post0_.title as title4_0_0_, user1_.fullName as fullName2_1_1_, user1_.passwordHash as passwordHash3_1_1_, user1_.username as username4_1_1_ from posts post0_ left outer join users user1_ on post0_.author_id=user1_.id order by post0_.date DESC) where rownum <= ? 

而且它引发的异常:

java.sql.SQLSyntaxErrorException: ORA-01747: invalid user.table.column, table.column, or column specification 

我也曾尝试使用本机,如下图所示:

@Repository 
public interface PostRepository extends JpaRepository<Post, Long> { 
@Query(value = "SELECT * FROM POSTS aa JOIN USERS bb ON aa.AUTHOR_ID=bb.ID", nativeQuery = true) 
List<Post> findLatest5Posts();} 

这次没有发生错误。但是,它不返回任何内容,为空结果集。

那么我该如何解决这个问题呢?

在此先感谢。

回答

0

我最近得到了同样的错误。问题是我得到了一个名为“VALUES”的列,而它是一个保留字。我只是将它改为“VALUE”,问题就解决了。

我想你可能会对保留字“DATE”有同样的问题。例如尝试将其更改为“CREATION_DATE”。

关于第二个查询,您可能没有同样的问题,因为您没有在select中指定POSTS.DATE列。

+0

非常感谢@Nis!我已更改列名称,它工作。另外,还有一些其他问题。例如。当创建POSTS表时我手动添加了外键,这是完全不必要的,因为我已经通过我的代码给出了链接。所以我有这个错误。总结一下,手动添加主键到表格和更改保留字在我的情况下工作。 –