【问题标题】:Method query with multiple tables including ordering?具有多个表的方法查询,包括排序?
【发布时间】:2017-10-11 07:48:12
【问题描述】:

我不确定我是否通过此任务达到了方法查询的边界。 我有两张桌子,一张User 桌子和一张Password 桌子。一个User 可能有多个Passwords(其中最新的是当前的)。

我想在我的 User 存储库中进行方法查询,以获取“当前”Password 的用户名。

在 SQL 中它看起来像这样

"Select FIRST(*) from Passwords INNERJOIN Users ON Users.id=Passwords.userId WHERE Users.username=%s ORDER BY Passwords.created DESC"

我尝试过的方法查询是findFirstPasswordOrderByPasswords_CreatedByUsers_Username(String username)

这给了我一个例外:

No property byUsers found for type long! Traversed path: UsersEntity.passwords.created.

我不知道为什么它仍然指向created 字段。 这对于方法查询来说太多了吗?还是我做错了?

【问题讨论】:

    标签: hibernate join named-query spring-repositories


    【解决方案1】:

    当您搜索密码时,您应该在密码存储库中定义此方法。在该存储库中,此方法如下所示:

    Passwords findFirstByUser_UsernameOrderByCreatedDesc(String username);
    

    要实现此方法,您的密码实体类应引用用户属性上的用户表(来自查询)

    【讨论】:

    • 这是否意味着,我只能从我的UserRepository 获得UserEntities
    • 是的,存储库中的查询方法仅限于实体,即存储库连接到的实体。但是,您可以使用带有自定义 @Query 注释的方法,其中包含您想要的查询。
    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    相关资源
    最近更新 更多