У меня исключение 505, когда я пытаюсь удалить элемент с помощью Freemarker Spring Boot - PullRequest
1 голос
/ 08 мая 2020

Ошибка: Произошла непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500). Данный идентификатор не должен быть нулевым !; вложенное исключение: java .lang.IllegalArgumentException: данный идентификатор не должен быть нулевым! org.springframework.dao.InvalidDataAccessApiUsageException

Это мой контроллер

    @GetMapping("delete/{topic}")
public String delete(Long id) {
    topicRepos.deleteById(id);
    return "redirect:/topic-list";
}

Репозиторий

public interface TopicRepos extends JpaRepository<Topic,Long> {

public Topic deleteById(int id);}

Entity

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
privatre Long id;
private String topicName;
private String topicMessage;
private String topicDescribe;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="id_topic")
private List<Message> messages;

public Topic() {}

public Topic(String topicName, String topicMessage) {
    this.topicName = topicName;
    this.topicMessage = topicMessage;
}

public Topic(String topicName, String topicMessage, String topicDescribe) {
    this.topicName = topicName;
    this.topicMessage = topicMessage;
    this.topicDescribe = topicDescribe;
}

public List<Message> getMessages() {
    return messages;
}

public void setMessages(List<Message> messages) {
    this.messages = messages;
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getTopicName() {
    return topicName;
}

public void setTopicName(String topicName) {
    this.topicName = topicName;
}

public String getTopicMessage() {
    return topicMessage;
}

public void setTopicMessage(String topicMessage) {
    this.topicMessage = topicMessage;
}

public String getTopicDescribe() {
    return topicDescribe;
}

public void setTopicDescribe(String topicDescribe) {
    this.topicDescribe = topicDescribe;
}

>

html и код freemarker

<#list topics.content as tempTopic>
<tr>
<td>${tempTopic.topicName}</td>
<td><a href="/topic/${tempTopic.id}" class="btn btn-info btn-sm mb-3">Follow</a>
<a href="/topic/delete/${tempTopic.id}"
				class="btn btn-danger btn-sm"
				 onclick="if (!(confirm('Are you sure you want to delete this topic?'))) return false">
					Delete</a></td>
</td>
</tr>
</#list>

1 Ответ

1 голос
/ 08 мая 2020

Ваш topi c id не сопоставлен с параметром delete метода.

Используйте @PathVariable для сопоставления переменных пути с параметром метода.

@GetMapping("delete/{topic}")
public String delete(@PathVariable("topic") Long id) {
...