ошибка: несовместимые типы: int нельзя преобразовать в клиент - Java - PullRequest
0 голосов
/ 16 февраля 2019

Я довольно новичок в Java и работаю над приложением базы данных Spring Boot (MySQL), в котором я пытаюсь создать метод, который позволит удалять клиента (объект Java) из моей базы данных, используя DaoCrudRepository и поиск по уникальному Id.При запуске я получаю сообщение об ошибке «ошибка: несовместимые типы: int невозможно преобразовать в клиент»

Я сравнил аналогичную программу, в которой я использовал тот же синтаксис без проблем, поэтому не знаю, почемуЯ получаю эту ошибку при обработке.

Мой объект настроен так: @Entity public class Client {

@Id
@GeneratedValue
private int id;

@NotNull
@Size(min=1, message = "Must enter client name")
private String name;

@NotNull
@Size(min=1, message= "Must enter contact's name")
private String contact;

@NotNull
@Size(min=1, message="Must enter primary office location")
private String location;

@NotNull(message="Must enter contract start date")
private String startDate;

@NotNull(message="Must enter contract end date")
private String endDate;

@NotNull(message="Must enter employee count")
private Integer employeeCount;

private PhilanthropyInterest interest;

public Client(String name, String contact, String location, String startDate, String endDate, Integer employeeCount) {
    this.name = name;
    this.contact = contact;
    this.location = location;
    this.startDate = startDate;
    this.endDate = endDate;
    this.employeeCount = employeeCount;
}

public Client () { }

public int getId() { return id; }

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getContact() {
    return contact;
}

public void setContact(String contact) {
    this.contact = contact;
}

public String getLocation() {
    return location;
}

public void setLocation(String location) {
    this.location = location;
}

public String getStartDate() {
    return startDate;
}

public void setStartDate(String startDate) {
    this.startDate = startDate;
}

public String getEndDate() {
    return endDate;
}

public void setEndDate(String endDate) {
    this.endDate = endDate;
}

public Integer getEmployeeCount() {
    return employeeCount;
}

public void setEmployeeCount(Integer employeeCount) {
    this.employeeCount = employeeCount;
}

public PhilanthropyInterest getInterest() { return interest; }

public void setInterest(PhilanthropyInterest interest) { this.interest = interest; }

И мой метод контроллера, в котором я получаю сообщение об ошибке:

@RequestMapping(value = "remove", method = RequestMethod.GET)
public String displayRemoveAddClientForm(Model model) {
    model.addAttribute("clients", clientDao.findAll());
    model.addAttribute("title", "Remove Client");
    return "clients/remove";
}

@RequestMapping(value = "remove", method = RequestMethod.POST)
public String processRemoveClientForm(@RequestParam int[] clientIds) {

    for (int clientId : clientIds) {
        clientDao.delete(clientId);
    }

    return "redirect:";
}

И мой класс ClientDao:

@Repository
@Transactional
public interface ClientDao extends CrudRepository<Client, Integer> {

}

Ошибка, отображаемая в состояниях IntelliJ:

delete (org.launchcode.spcdb.models.Client) в CrudRepositoryне может быть применено к (int)

, и при запуске я получаю:

ошибка: несовместимые типы: int не может быть преобразован в Client clientDao.delete (clientId);

1 Ответ

0 голосов
/ 16 февраля 2019

здесь вы можете найти документацию для CRUDRepository: https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html Вы увидите, что метод delete (T entity) принимает объект в качестве аргумента.В вашем случае это Клиент.

Поскольку вы используете

public interface ClientDao extends CrudRepository<Client, Integer>

метод удаления (T entity), который вы используете, ожидает Клиента.

Итакпопробуйте:

public String processRemoveClientForm(@RequestParam int[] clientIds) {
    List<Client> clientList = clientDAO.findByIds(clientIds);
    for (Client client : clientList) {
        clientDao.delete(client );
    }
}

это должно работать.Nerver забудь, что ты манипулируешь Объектом в этом случае.

...