【发布时间】:2017-06-16 17:33:33
【问题描述】:
这是我的控制器方法:
// CREATE A USER
@PostMapping("/register")
public String createUser(
@RequestBody User user
) {
if (userService.userExists(user)) {
return "User already exists";
}
userService.saveUser(user);
return "Good job!";
}
UserServiceBean
@Service
public class UserServiceBean {
private UserRepository userRepository;
@Autowired
public UserServiceBean(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User saveUser(User user) {
return userRepository.save(user);
}
public boolean userExists(User user) {
if (userRepository.findByUsername(user.getUsername()) == null) {
return false;
}
return true;
}
还有我的接口存储库: 用户存储库
public interface UserRepository extends CrudRepository<User, Long> {
// TODO: 29.01.17 Create a query to find all todos for logged in user
@Query("select td from User u inner join u.toDoItems td where u = :user")
public Iterable<ToDoItem> findAllToDosForLoggedInUser(@Param("user") User user);
public User findByUsername(String username);
}
这是我的用户实体(省略了 getter 和 setter)
@Entity
@Table (name = "USERS")
public class User extends BaseEntity {
@Column(name = "USERNAME")
private String username;
// TODO: 28.01.17 Find a way to store hashed and salted pws in DB
@Column(name = "PASSWORD")
private String password;
@Column(name = "EMAIL")
private String email;
// user can have many ToDoItems
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private Set<ToDoItem> toDoItems;
// JPA demands empty constructor
public User() {}
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
当我在我的 localhost:8080/register 上拍摄 JSON 时:
{
"username":"ss",
"password":"mkyong.com",
"email":"asdasd@wp.pl"
}
我得到了回复干得好!所以它工作正常。但是当我在 localhost:8080/console 检查我的数据库时,它只有测试表并且没有添加新用户。
我在 application.properties 中设置了休眠 ddl:
# Console to H2 database to check data
spring.h2.console.enabled=true
spring.h2.console.path=/console
spring.jpa.hibernate.ddl-auto=create-drop
那么,如何更新创建表 USERS 的代码并将创建的用户保存到该数据库中?稍后我将更改我的数据库,仅使用 H2 来检查我的控制器是否工作正常,但在这里应该没关系。
编辑: 这是我的 RepositoryConfiguration.java:
@Configuration
@EnableAutoConfiguration
@EntityScan(basePackages = {"com.doublemc.domain"})
@EnableJpaRepositories(basePackages = {"com.doublemc.repositories"})
@EnableTransactionManagement
public class RepositoryConfiguration {
}
编辑2: 当我想再次注册同一个用户(使用相同的 JSON)时,它给了我“用户已经存在”的响应,所以它已经在数据库中......为什么我看不到它呢?也许我在其他地方有H2?不在基本的 /console 或不同的端口?我该如何检查?
【问题讨论】:
标签: java hibernate spring-boot spring-data-jpa h2