当前位置: 首页 > 知识库问答 >
问题:

Spring不希望将记录保存在数据库中

武元白
2023-03-14

日志:

2021-05-09 14:04:19.356错误22211---[nio-8080-exec-2]O.A.C.C.C.[.[.[/].[dispatcherServlet]:servlet.Service()对于路径[]上下文中的servlet[dispatcherServlet]抛出异常[请求处理失败;嵌套异常为java.lang.NullPointerException:无法调用“com.dzeru.springLoginformandoAuth2tutorial.repos.postrepo.save(Object)”,原因是“this.postrepo”为null]

package com.dzeru.springloginformandoauth2tutorial.controllers;

import com.dzeru.springloginformandoauth2tutorial.entities.Post;
import com.dzeru.springloginformandoauth2tutorial.repos.PostRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;

import java.security.Principal;
import java.util.ArrayList;
import java.util.List;

@Controller
public class PostMakerController {
    @Autowired
    private PostRepo postRepo;

    public static List<Post> posts = new ArrayList<>();

    @PostMapping("/prj")
    public String makePost(String title, String content,
                           Principal principal, Model model) {

        int wordsLength = content.split(" ").length;

        if (title.length() > 30) {
            model.addAttribute("text", "Title size > 30");
        } else if (wordsLength < 30) {
            model.addAttribute("text", "Your content < 30 words");
        } else if (wordsLength > 100) {
            model.addAttribute("text", "Your content > 100 words");
        } else {
            Post post = new Post();
            post.setContent(content);
            post.setAuthor(principal.getName());
            post.setParagraph(title);

            postRepo.save(post);
            posts = postRepo.findAll();

            model.addAttribute("posts", posts);

            return "prj";
        }

        return "prj";
    }
}
package com.dzeru.springloginformandoauth2tutorial.repos;

import com.dzeru.springloginformandoauth2tutorial.entities.Post;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

@Service
@Repository
public interface PostRepo extends JpaRepository<Post, Integer> {
}
<form action="/prj" method="post" class="auto_form">
    <div class="container">
        <label>
            <input type="text" placeholder="Enter title" name="title" required>
        </label>
        <label>
            <textarea id="text" cols="100%" rows="20%" placeholder="Enter content" name="content" required></textarea>
        </label>
        <b th:text="${text}"></b>
        <button type="submit" class="button_login">Submit</button>
    </div>
</form>
package com.dzeru.springloginformandoauth2tutorial.entities;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Objects;

@Entity
@Table(name = "post")
public class Post {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @NotNull
    private String author;
    @NotNull
    private String paragraph;
    @NotNull
    private String content;

    public Post() {
        this("EMPTY", "EMPTY", "EMPTY");
    }

    public Post(@NotNull String author, @NotNull String paragraph, @NotNull String content) {
        this.author = author;
        this.paragraph = paragraph;
        this.content = content;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Post post = (Post) o;
        return Objects.equals(id, post.id) && Objects.equals(author, post.author) && Objects.equals(paragraph, post.paragraph) && Objects.equals(content, post.content);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, author, paragraph, content);
    }

    @Override
    public String toString() {
        return "Post{" +
                "id=" + id +
                ", author='" + author + '\'' +
                ", paragraph='" + paragraph + '\'' +
                ", content='" + content + '\'' +
                '}';
    }

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

    public Long getId() {
        return id;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getParagraph() {
        return paragraph;
    }

    public void setParagraph(String paragraph) {
        this.paragraph = paragraph;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

谢谢你的帮助!

共有1个答案

蒋栋
2023-03-14

我修好了。问题在于:数据截断:数据对于列'column_name'太长。我只是在我的应用程序中创建:jdbcCompliantTruncation=false.properties

 类似资料:
  • 我面临着使用Spring数据JPA存储库将数据保存到数据库的问题。 我的场景是:我使用循环逐个收集和保存数据。收集所有数据需要很多时间。因此,我想将每个记录的数据立即保存到表中并保存到数据库中。我正在使用saveAndFlush方法,但数据并没有立即保存到表中。 我迫不及待地要收集所有数据,因为收集所有数据可能需要一整天。

  • 我使用的是由java.sql引起的相同代码:na]。SQLSyntaxErrorException:ORA-00942:表或视图不存在-Spring批处理,无法将记录保存到数据库中。 我已经创建了表 LifeCycleStatusWriter.java 作家 错误: 配置详细信息 数据库配置

  • 问题内容: 我正在寻找最快和正确的方法来检查数据库中是否存在记录: 您有任何问题吗? 问题答案: 考虑那是你的课 我将您的参数保留为a,但我认为应该将其作为。 它比因为不需要在select子句中从表中检索所有值而更快。 您可以将字符串放入静态最终常量中,以使其更快。

  • 我在使用JPA时遇到了一些困难。我没有得到任何异常,但我不能保存任何东西到数据库。我从Hibernate到Jpa,在那里一切都工作得很好。下面是我的文件 Application.Properties: 存储库: 服务: 我在提交表单时得到了200的响应,但在数据库中找不到数据

  • 我有一个使用JPA的Spring Boot应用程序,它有两个数据源,一个用于DB2,一个用于SQL Server。 当我尝试将实体保存到SQL Server时,不会抛出任何错误,但该实体不会持久化到数据库。我看不到日志中正在生成插入。 提前感谢 下面是我尝试保存实体所执行的代码@组成部分 下面是sql Server配置。 这是SQL Server存储库 公共接口BeercupMessageLogR

  • 问题内容: 我想为Eclipse创建一个Google Closure Compiler插件。我已经有一个弹出菜单项,用于将JavaScript文件编译为压缩版本。但是,如果每次保存时都会自动生成一个缩小的版本,那么它将大有帮助。我已阅读/听说过有关自然和建筑,扩展点和的内容。但是我没有弄清楚我应该使用什么,尤其是如何使它工作。 是否有一个实用的插件实例可以执行“相同的事情”,以便我可以从中进行工作