在 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
属性。
我正在尝试在我的存储库中使用 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
属性。