java - 在发布时使用 Spring Boot JPA 在 H2 数据库中插入数据
问题描述
我想使用Spring Boot将注册表单上的数据从我的 Angular 应用程序保存到H2
数据库中。JPA
但是当我发布到 Spring boot 以保存用户数据时,我NullPointerException
在调用 save 方法的线路上得到了一个。当我只返回用户数据而不保存数据时,它工作正常,但在保存数据时却不行。
创建的table
那个:
Hibernate:
create table user (
id integer not null,
email varchar(255),
first_name varchar(255),
last_name varchar(255),
password varchar(255),
primary key (id)
)
我的entity
:
@Entity
public class User {
@javax.persistence.Id
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String firstName;
private String lastName;
private String email;
private String password;
// getters, setters, and constructor, etc.
我的repository
:
@Repository
@Transactional
public class JPAUserRepository implements UserRepository {
@Autowired
private EntityManager em;
@Override
@Transactional
public void save(User user) {
em.createNativeQuery("INSERT INTO user (id, first_name, email, last_name, password)" +
"VALUES (?,?,?,?,?)")
.setParameter(1, user.getId())
.setParameter(2, user.getFirstName())
.setParameter(3, user.getEmail())
.setParameter(4, user.getLastName())
.setParameter(5, user.getPassword())
.executeUpdate();
}
我处理帖子的控制器:
@RestController
public class Register {
private JPAUserRepository jpaUserRepository;
@PostMapping(path = "/api/register", consumes = "application/json")
public String addUser(@RequestBody User user) {
jpaUserRepository.save(user);
return "succesfull add";
}
在存储库中,我也尝试过em.persist(user)
,但这给出了同样的错误。
解决方案
不知道你的错误到底来自哪里。但我注意到:您正在使用提供的 id 插入您的用户,但是它在实体处声明 @Generated - 因此应该生成而不提供 ID。使用 Spring Boot,您通常会拥有这样的存储库:
public interface UserRepository extends CrudRepository<User, Integer> {
}
您不需要任何额外的方法 - 通过调用 userRepository.save(..) 用户将被持久化。我建议查看https://bootify.io并创建一个正在运行的应用程序,这样您就可以检查配置方面缺少的内容。
推荐阅读
- javascript - 在 React 组件中显示我的模式时出错
- java - readObject 没有从文件中读取 Linkedlist 的所有元素
- javascript - jquery事件监听器在动态列表项上多次调用
- mongodb - writeStream 处理数据到 mongodb
- c - 如何找到其分析形式未知的函数的根,而是该函数作为一组值的列表可用?
- java - ShapeRenderer 没有在图像后面绘制 FilledRectangles
- android - 图像轮播Android计时器
- java - 使用 FIPS 在 Windows 机器上运行 JPackage
- javascript - 尝试使用过滤器数组过滤主数组并获得结果
- javascript - 如何获取 Javascript 跟踪脚本的订单详细信息?