在 Spring 数据查询方法声明中找不到嵌套 属性

Nested property not found in a Spring Data query method declaration

我正在尝试在我的存储库中使用 findBy... 来获取将嵌套属性(名称)作为参数传递的 Savingaccount 对象。目前我正在使用:

Mono<SavingAccount> findByOwnerName(String name);

但我收到此错误:未找到类型所有者的 属性 名称!遍历路径:SavingAccount.owner.

我的存储库:

package com...SavingAccMS.Repository;

import com.everis.SavingAccMS.Model.Owner;
import com.everis.SavingAccMS.Model.SavingAccount;

import org.springframework.data.mongodb.repository.ReactiveMongoRepository;

import reactor.core.publisher.Mono;

public interface SavingAccountRepo extends ReactiveMongoRepository<SavingAccount, String>
{

   Mono<SavingAccount> findByNumber(String number);

   //This one is the problem
   Mono<SavingAccount> findByOwnerName(String name);

   Mono<SavingAccount> findByOwner(Owner owner);
}

我的实体:

package com...SavingAccMS.Model;

import java.security.acl.Owner;

import javax.validation.constraints.NotBlank;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import lombok.Data;

@Data
@Document(collection = "SavingAccs")
public class SavingAccount
{
   @Id
   private String id;

   @NotBlank
   private String number;

   @NotBlank
   private Owner owner;

   @NotBlank
   private String currency;

   @NotBlank
   private double balance = 0.00;

   @NotBlank
   private String status;
}
package com...SavingAccMS.Model;

import org.springframework.data.mongodb.core.mapping.Document;

import lombok.Data;

@Data
@Document(collection = "Owners")
public class Owner
{
   public String dni;

   public String name; //findBy this attribute is required.
}

我不确定,但我认为您无法像那样在休眠中找到所有者名称。 我会尝试以下方法!

@Query("SELECT * FROM SavingAccount where owner.name = :name")
Mono<SavingAccount> findByOwnerName(@Param("name") String name);

根据您的导入,您的SavingAccount中的Owner指的是java.security.acl.Owner,而不是您在om...SavingAccMS.Model.Owner中定义的那个。前者不带 name 属性。