Я пытаюсь подсчитать количество неудачных попыток входа в систему в день с помощью springboot. На данный момент я обнаружил, что есть countBy, который можно использовать для подсчета, однако я не уверен, как выполнить этот запрос с помощью countBy.
Вот что я хочу сделать:
count all login attempts where date = today'sDate ,
loginID = userLoginID
and booleanLoginSuccess = false
Это то, что я пытался сделать в моем LoginRepository:
Long countByTodayDateAndLoginCredentialsIDAndloginSuccessStatusTrue( String currentDate, int loginId);
Это ошибка, которую я получил:
No property loginCredentialsIDAndloginSuccessStatus found for type LoginInformation!
Это мой объект LoginInformation:
@Entity
@Table(name = "LoginInformation")
public class LoginInformation {
@JsonIgnore
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int loginID;
@JsonIgnore
private Boolean loginSuccessStatus;
private String deviceID;
private String appVersion;
private String deviceOS;
@JsonIgnore
private String todayDate;
@JsonIgnore
@ManyToOne
@JoinColumn(name = "loginCredentialsID")
private UserLogin userLogin;
public LoginInformation() {
}
public LoginInformation(Boolean loginSuccessStatus, String deviceID, String appVersion, String deviceOS) {
this.loginSuccessStatus = loginSuccessStatus;
this.deviceID = deviceID;
this.appVersion = appVersion;
this.deviceOS = deviceOS;
}
public LoginInformation(Boolean loginSuccessStatus, String deviceID, String appVersion, String deviceOS, String todayDate, UserLogin userLogin) {
this.loginSuccessStatus = loginSuccessStatus;
this.deviceID = deviceID;
this.appVersion = appVersion;
this.deviceOS = deviceOS;
this.todayDate = todayDate;
this.userLogin = userLogin;
}
... omitted getter and setters for brevity
Это моя сущность UserLogin:
Entity
@Table(name = "UserLogin",
uniqueConstraints =
{
@UniqueConstraint(columnNames = "userName")
})
public class UserLogin implements Serializable, UserDetails {
@JsonIgnore
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int loginCredentialsID;
private String username;
private String password;
@OneToMany(mappedBy = "userLogin", cascade = CascadeType.ALL)
private List<LoginInformation> loginInfo = new ArrayList();
public UserLogin(String username, String password) {
this.username = username;
this.password = password;
}
public UserLogin() {
}
... omitted getter and setters for brevity
Я добавил объект LoginInfomation и приношу свои извинения за длинные имена




Следует использовать поля сущностей, а не имена столбцов.
Long countByTodayDateAndUserLoginLoginCredentialsIDAndloginSuccessStatusTrue( String currentDate, int loginId);
userLogin - это объект, поэтому для доступа к его идентификатору добавьте идентификатор в имя метода
я получаю следующую ошибку java.lang.IllegalArgumentException: значение параметра [1] не соответствует ожидаемому типу
Значение параметра [1] не соответствует ожидаемому типу [usermanagementapi.Entities.UserLogin (n / a)]; вложенное исключение - java.lang.IllegalArgumentException: значение параметра [1] не соответствует ожидаемому типу [usermanagementapi.Entities.UserLogin (n / a)] "
Я думаю, что ваш ответ правильный, но знаете ли вы, как решить проблему несоответствия параметров
Я думаю, причина в том, что ваш идентификатор называется loginCredentialsID.
Пожалуйста, опубликуйте свой код объекта
LoginInformation. И, кстати, то, что вы можете использовать методы с ужасно длинными именами, не означает, что вы должны делать это с собой и с будущими несчастными читателями кода.