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



我正在尝试在我的存储库中使用findBy...来获取一个将嵌套属性(name(作为参数传递的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.
}

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

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

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

最新更新