【发布时间】:2021-04-16 13:58:24
【问题描述】:
我正在尝试向名为 user 的表中插入一条记录。我试图排除故障的方法是 insertNewUser,它位于我的班级UserRepositoryCustom。我正在使用JPARepository 和EntityManger 来完成此任务。我仍然无法将用户插入表中。对此的任何帮助将不胜感激。
UserRepositoryImpl
public class UserRepositoryImpl implements UserRepositoryCustom {
@PersistenceContext
private EntityManager entityManager;
public void insertNewUser(User user) {
entityManager.createNativeQuery("INSERT INTO user (username,password) VALUES (?,?)")
.setParameter(1,user.getUserName())
.setParameter(2,user.getPassword());
}
}
用户存储库自定义
public interface UserRepositoryCustom {
public void insertNewUser(User user);
}
用户存储库
@Repository
public interface UserRepository extends JpaRepository<User, Integer>, UserRepositoryCustom {
User findById(int id);
User findByUserName(String userName);
}
【问题讨论】:
-
你为什么要编写自己的查询而不只是使用提供的
save方法?界面上的@Repository也是无用的,如果没有事务,则不会插入任何内容。但正如开头提到的,为什么要编写自己的插入而不是使用 JPA 呢? -
我在尝试将用户记录插入数据库时遇到问题,该记录看起来像 User(id=null,name="evan",password="test123")
-
但是为什么不直接使用
save呢?这应该可以满足您的所有需求。如果有问题,可能与您在User实体中的映射有关。使用自定义 SQL 解决这个问题并不是正确的解决方案。 -
谢谢我在这里提出了一个问题:stackoverflow.com/questions/67097380/…,但没有一个解决方案有效。所以,我尝试了其他方法。