如何使用Spring Boot和Hibernate解决存储数据的问题?

时间:2020-08-01 20:10:09

标签: spring-boot hibernate

尝试在数据库中存储数据时出现以下错误。

这是实体类:

@Entity
@Table(name="utilisateur")
public class Utilisateur {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id_utilisateur;

    @NotEmpty @Email
    private String email;

    @NotEmpty  @JsonIgnore
    private String password;

    private String role;

    ...
}

我当然放了吸气剂和塞子剂。

这是控制器:

public class UserController {
    @Autowired
    UserRepository userRepository;
    
    @PostMapping(value = "/add")
    public Utilisateur addUser(@Valid @RequestBody UserRequest userRequest) 
            throws RequestValidationException {

        Utilisateur utilisateur=new Utilisateur();
        
        utilisateur.setEmail(userRequest.getEmail());
        utilisateur.setPassword(userRequest.getPassword());
        utilisateur.setRole(userRequest.getRole());
            
        Utilisateur userAdded =  userRepository.save(utilisateur);
       
        return userAdded;
    }
}
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;

存储库

     @Repository
      public interface UserRepository extends CrudRepository<Utilisateur, 
      Integer> {

      }

当我尝试存储数据时,出现以下Hibernate错误:error performing isolated work; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: error performing isolated work

1 个答案:

答案 0 :(得分:0)

使用您的类,以下代码块可以正常工作。

Utilisateur utilisateur=new Utilisateur();
        
utilisateur.setEmail("foo@bar.com");
utilisateur.setPassword("foobar");
            
Utilisateur userAdded =  userRepository.save(utilisateur);

现在您提到ConstraintViolationException [null],很可能您在userRequest对象方面遇到了麻烦。您应该在控制台日志中查找约束违例的列表。您可以查看违反了哪些约束(interpolatedMessage)和它们属于哪些变量(propertyPath)。

List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='must not be empty', propertyPath=email, rootBeanClass=class com.ecommerce.Utilisateur, messageTemplate='{javax.validation.constraints.NotEmpty.message}'}
    ConstraintViolationImpl{interpolatedMessage='must not be empty', propertyPath=password, rootBeanClass=class com.ecommerce.Utilisateur, messageTemplate='{javax.validation.constraints.NotEmpty.message}'}
]