Dan*_*nii 0 java spring hibernate jpa spring-boot
我正在/users/register用身体打电话
{
"username": "daniel",
"email": "email@yahoo.com",
"password": "something"
}
Run Code Online (Sandbox Code Playgroud)
用户
package com.youngahn.RobinhoodAPI.entity;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "users")
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
private String username;
@NotBlank
private String email;
@NotBlank
private String password;
private BigDecimal funds = new BigDecimal("0.00");
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
public Set<UserStock> userStocks = new HashSet<>();
}
Run Code Online (Sandbox Code Playgroud)
用户控制器
package com.youngahn.RobinhoodAPI.controllers;
import com.youngahn.RobinhoodAPI.dtos.LoginRequestDto;
import com.youngahn.RobinhoodAPI.dtos.RegisterRequestDto;
import com.youngahn.RobinhoodAPI.entity.User;
import com.youngahn.RobinhoodAPI.repository.UserRepository;
import com.youngahn.RobinhoodAPI.service.UserService;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/users")
@CrossOrigin(origins = "*")
public class UserController {
private UserRepository userRepository;
@Autowired
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@PostMapping("/signin")
public ResponseEntity<?> getUser(@RequestBody LoginRequestDto loginRequestDto) {
return ResponseEntity.ok(loginRequestDto);
}
@PostMapping("/register")
public ResponseEntity<?> createUser(@Valid @RequestBody RegisterRequestDto registerRequestDto) {
User user = new User() {{
setUsername(registerRequestDto.getUsername());
setEmail(registerRequestDto.getEmail());
setPassword(registerRequestDto.getPassword());
}};
userRepository.save(user);
return ResponseEntity.ok(registerRequestDto);
}
}
Run Code Online (Sandbox Code Playgroud)
用户存储库
package com.youngahn.RobinhoodAPI.repository;
import com.youngahn.RobinhoodAPI.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误,实体在尝试保存时似乎未被识别为实体。我在谷歌上没有看到任何类似的错误。
{
"timestamp": "2023-03-08T05:40:40.215+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "org.springframework.dao.InvalidDataAccessApiUsageException: com.youngahn.RobinhoodAPI.controllers.UserController$1 is not an entity\n\tat
...
"message": "com.youngahn.RobinhoodAPI.controllers.UserController$1 is not an entity",
"path": "/users/register"
}
Run Code Online (Sandbox Code Playgroud)
new User()当您在实际创建没有注释的 User 匿名子类之后立即调用 {} 时@Entity(子类无法访问类级别注释)
只需这样做:
User user = new User();
user.setUsername(registerRequestDto.getUsername());
user.setEmail(registerRequestDto.getEmail());
user.setPassword(registerRequestDto.getPassword());
Run Code Online (Sandbox Code Playgroud)
如果您确实想节省时间和线条,只需创建一个合适的构造函数或使用构建器模式。(但请确保也定义一个无参数构造函数 - spring jpa 需要它)
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |