Можем ли мы использовать MongoRespository для findByNameAndPassword() этого типа запросов?

Optional<TicketUserDto> ticketuser=ticketUserDao.findByUserIdAndPassword(userId, password);

DAO:

@Repository
public interface TicketUsersDao extends MongoRepository<TicketUserDto, Serializable> {
    Optional<TicketUserDto> findByUserIdAndPassword(String userId, String password);
}

И вот определение DTO

@Document(collection="ticket_users") 
public class TicketUserDto { 
    private String userId; 
    private String password; 

    public String getUserId() { return userId; } 
    public void setUserId(String userId) { this.userId = userId; } 

    public String getPassword() { return password; } 
    public void setPassword(String password) { this.password = password; }

    @Override public String toString() { 
        return "TicketUserDto [userId=" + userId + 
            ", password=" + password + "]"; 
    } 
}

2 ответа

Ваш метод find должен выглядеть следующим образом:

Optional<TicketUserDto> findOptionalByUserIdAndPassword(String userId, String password);

Кроме того, ваш класс не объявляет первичный ключ. Чтобы это сработало, вы должны провести рефакторинг ваших классов следующим образом:

@Document(collection="ticket_users") 
public class TicketUserDto { 
    @Id
    private String userId; 
    /* the other code remains untouched */
}

@Repository
public interface TicketUsersDao extends MongoRepository<TicketUserDto, String> {
    Optional<TicketUserDto> findOptionalByUserIdAndPassword(String userId, String password);
}

Наконец я понял, что добавил @field, тогда я получу значения

 @Field(value="userId")
private String userId;
@Field(value="password")
private String password;
Другие вопросы по тегам