Spring “我如何解决错误”;“地位”:500,”;错误";:&引用;“内部服务器错误”;

Spring “我如何解决错误”;“地位”:500,”;错误";:&引用;“内部服务器错误”;,spring,oracle,spring-boot,rest,postman,Spring,Oracle,Spring Boot,Rest,Postman,我正在为我的网站开发注册页面的后端部分,问题是当我在postman中测试时,我得到以下错误: 我在eclipse控制台中也遇到了这个错误: 2020-05-29 17:58:06.226 ERROR 1368 --- [nio-8484-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-01400: impossible d'insérer NULL dans ("NAWFEL"."ORDO_DEP_UTILISATEUR"."IDE

我正在为我的网站开发注册页面的后端部分,问题是当我在postman中测试时,我得到以下错误:

我在eclipse控制台中也遇到了这个错误:

2020-05-29 17:58:06.226 ERROR 1368 --- [nio-8484-exec-8] o.h.engine.jdbc.spi.SqlExceptionHelper   : ORA-01400: impossible d'insérer NULL dans ("NAWFEL"."ORDO_DEP_UTILISATEUR"."IDENTIFIANT")

2020-05-29 17:58:06.230 ERROR 1368 --- [nio-8484-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause

oracle.jdbc.OracleDatabaseException: ORA-01400: impossible d'insérer NULL dans ("NAWFEL"."ORDO_DEP_UTILISATEUR"."IDENTIFIANT")

    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:513) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:461) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1104) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:550) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:268) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:655) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:270) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:91) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:970) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1205) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
我看到错误来自id,但正如您在这里看到的,我在json部分的postman中插入了id:

{
    "id":2,
    "EMPLOI":2,
    "ENTITE":2,
    "LOGIN":"hr",
    "MOTDEPASSE":"hr",
    "NOM":"bougrine",
    "PRENOM":"rachid",
    "STATUT":"br",
    "CREEPAR": 2
}
这是我在我的应用程序中配置spring安全性的代码:

package com.app.habilitation.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;


@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {


    @Override
    protected void configure (HttpSecurity http) throws Exception {

        http.cors();
        http.csrf().disable();
        http.authorizeRequests().antMatchers("/**").
        fullyAuthenticated().and().httpBasic();
    }


    @Override
    protected void configure (AuthenticationManagerBuilder auth) throws Exception {

        auth.inMemoryAuthentication()
        .withUser("hr")
        .password("{noop}hr").roles("USER");
    }


}
这是我的控制器:

package com.app.habilitation.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.app.habilitation.entity.UserEntity;
import com.app.habilitation.service.UserService;

@SpringBootApplication
@RestController
@CrossOrigin(origins = "*")
public class UserController {

    private UserService userService;

    @Autowired
    public UserController (UserService theuserService) {
        userService=theuserService;
    }


    @GetMapping("/")
    public String login() {
        return "authenticaated succesfully";
    }


    @GetMapping("/getUsers") 
    public String getUsers() {
        return "users";
    }


    @PostMapping("/addUser")
    public UserEntity addUser (@RequestBody UserEntity theUser) {

        System.out.println("test");
        userService.save(theUser);

        return theUser;
    }
}
这是我的dao(我使用jpa):

这是我的服务界面:

package com.app.habilitation.service;

import java.util.List;

import com.app.habilitation.entity.UserEntity;



public interface UserService {




    public void save (UserEntity theUser);


}
这是我的服务界面Impl:

package com.app.habilitation.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.app.habilitation.dao.UserDao;
import com.app.habilitation.entity.UserEntity;

@Service
public class UserServiceImpl implements UserService {

    private UserDao userDao;

    @Autowired

    public UserServiceImpl (UserDao theuserDao) {

        userDao = theuserDao;
    }



    @Override
    @Transactional
    public void save(UserEntity theUser) {

        userDao.save(theUser);

    }



}
这是我的application.properties(我将端口8080更改为8484,因为另一个应用程序使用此端口):


这是我在oracle 10g中的表:

我认为问题在于您在实体中告诉您id是生成的值。这样,Jpa将在插入过程中删除该值。您必须更改策略,如果您提供id,则不应将其标记为自动生成。
hth

Q:我如何解决错误“状态”:500,“错误”?答:在服务器上找到问题,并解决它。问:如何修复`ORA-01400:无法在(字符串)中插入null您的setter错误。您应该执行
此操作。IDENTIFIANT=IDENTIFIANT
IDENTIFIANT=IDENTIFIANT
将值分配给自身。你的构造函数也有同样的缺陷!我放了这个。IDENTIFIANT=IDENTIFIANT,但他不工作:(你能试试GenerationType.auto或sequence吗?可能是oracle 10g不支持标识列。
package com.app.habilitation.service;

import java.util.List;

import com.app.habilitation.entity.UserEntity;



public interface UserService {




    public void save (UserEntity theUser);


}
package com.app.habilitation.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.app.habilitation.dao.UserDao;
import com.app.habilitation.entity.UserEntity;

@Service
public class UserServiceImpl implements UserService {

    private UserDao userDao;

    @Autowired

    public UserServiceImpl (UserDao theuserDao) {

        userDao = theuserDao;
    }



    @Override
    @Transactional
    public void save(UserEntity theUser) {

        userDao.save(theUser);

    }



}
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.username=nawfel       
spring.datasource.password=hr

spring.jpa.show-sql=true
server.port=8484