列“列”不能为空

卢卡斯。D

我正在制作一个小网络应用程序。在这个应用程序中,我可以注册新用户。一个用户有一个角色,一个角色可以有多个用户。

用户表

在此处输入图片说明

角色表

在此处输入图片说明

如果我进行插入,我希望 rol_id 列为“1”(rol:用户)。在我使用 DBMS 时一切正常,但在使用 Spring 时却没有,因为我收到以下错误

2018-05-01 11:00:43.432 ERROR 9448 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper   : Column 'rol_id' cannot be null

我的代码是这样的:

滚动表

@Entity
@Table(name="roles")
public class Rol implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name="id_rol", updatable = false, nullable = false)
    private Long id;

    @Column(name="rol")
    @NotEmpty
    private String rolType;

    @OneToMany(mappedBy= "rol")
    private List<User> users = new ArrayList<>();

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRol() {
        return rolType;
    }

    public void setRol(String rol) {
        this.rolType = rol;
    }

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

}

用户表

@Entity
@Table(name="users")
public class User implements Serializable{

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name="id_user", updatable = false, nullable = false)
    private Long id;

    @Column(name="name")
    @NotEmpty
    @Length(min= 3, max= 25)
    private String name;

    @Column(name="surname")
    @NotEmpty
    @Length(min= 2, max=30)
    private String surname;

    @Column(name="email")
    @NotEmpty
    @Email
    @Length(min=5, max=30)
    private String email;

    @Column(name="birthdate", nullable = true)
    private String birthdate;

    @Column(name="created_at")
    @Temporal(TemporalType.DATE)
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date createdAt = new Date();

    @Column(name="gender")
    @NotEmpty
    @Length(min=4, max=6)
    private String gender;

    @Column(name="username")
    @NotEmpty
    @Length(min=3, max=20)
    private String username;

    @Column(name="pass")
    @NotEmpty
    @Length(min=8, max=30)
    private String password;

    @ManyToOne
    @JoinColumn(name="rol_id")
    private Rol rol;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getBirthdate() {
        return birthdate;
    }

    public void setBirthdate(String birthdate) {
        this.birthdate = birthdate;
    }

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    /* MODOFIQUE ESTO ACA, NO SE SI ESTA BIEN */
    public String getRol() {
        return rol.getRol();
    }

    public void setRol(Rol rol) {
        this.rol = rol;
    }

}

DAO 类

public interface IUserDAO extends CrudRepository<User, Long>{
}

用户服务接口

public interface IUserService {

    public List<User> findAll();
    public void save(User user);
    public User findOne(Long id);

}

实现 UserService 的类

@Service
public class UserServiceImpl implements IUserService{

    @Autowired
    IUserDAO userDAO;

    @Override
    @Transactional(readOnly = true)
    public List<User> findAll() {
        return userDAO.findAll();
    }

    @Override
    @Transactional
    public void save(User user) {
        userDAO.save(user);

    }

    @Override
    @Transactional(readOnly = true)
    public User findOne(Long id) {
        return userDAO.findOne(id);
    }

}

这是我的控制器

@Controller
@SessionAttributes("user")
public class UserController {

    Constants c = new Constants();

    @Autowired
    IUserService userService;

    @RequestMapping(value= "user/add", method = RequestMethod.GET)
    public String addUser(Model model) {
        User user = new User();
        model.addAttribute("user", user);
        model.addAttribute(c.TITLE, "Add User");
        model.addAttribute(c.ADD_USER);
        return "user-add";
    }

    @RequestMapping(value= "user/add", method = RequestMethod.POST)
    public String addUser(@Valid User user, BindingResult result, Model model, RedirectAttributes ra, SessionStatus status) {
        if(result.hasErrors()) {
            return "redirect:/user/add";
        }

        try {
            userService.save(user);
            status.setComplete();
        } catch(Exception e) {
            return "redirect:/user/list";
        }
        return "user-add";
    }

    @RequestMapping(value= "user/list", method = RequestMethod.GET)
    public String listUsers(Model model) {
        model.addAttribute("users", userService.findAll());
        model.addAttribute(c.TITLE, "Users List");
        model.addAttribute(c.LIST_USER);
        return "user-list";
    }

}

我对百里香的看法

<form th:action="@{/user/add}" method="POST" th:object="${user}" style="width: 70%;">

    <div class="form-group">
        <label for="inputName" class="text-uppercase font-weight-bold">Name</label>
        <input type="text" class="form-control" id="inputName" th:field="*{name}" autocomplete="off">
    </div>

    <div class="form-group">
        <label for="inputSurname" class="text-uppercase font-weight-bold">Surname</label>
        <input type="text" class="form-control" id="inputSurname" th:field="*{surname}" autocomplete="off">
    </div>

    <div class="form-group">
        <label for="inputEmail" class="text-uppercase font-weight-bold">Email</label>
        <input type="email" class="form-control" id="inputEmail" th:field="*{email}" autocomplete="off">
    </div>

    <div class="form-group">
        <label for="inputBirthdate" class="text-uppercase font-weight-bold">Birthdate</label>
        <input type="date" class="form-control" id="inputBirthdate" th:field="*{birthdate}" autocomplete="off">
    </div>

    <div class="form-group mb-5">
        <label for="inputGender" class="text-uppercase font-weight-bold">Gender</label>
        <select type="date" class="form-control" id="inputGender" th:field="*{gender}">
            <option th:value="other">Other</option>
            <option th:value="male">Male</option>
            <option th:value="female">Female</option>
        </select>
    </div>

    <div class="form-group">
        <label for="inputUsername" class="text-uppercase font-weight-bold">Username</label>
        <input type="text" class="form-control" id="inputUsername" th:field="*{username}" autocomplete="off">
    </div>

    <div class="form-group">
        <label for="inputPassword" class="text-uppercase font-weight-bold">Password</label>
        <input type="password" class="form-control" id="inputPassword" th:field="*{password}" autocomplete="off">
    </div>

    <button type="submit" class="btn btn-primary w-100">
        Add User
    </button>
</form>

当我进行插入时,我只想将 rol_id 设置为 1。出于某种原因,仅适用于 DBMS 而不适用于 Spring。

提前致谢。

克里齐斯

我不认为我遵循。您打算如何在rol_id不设置user.rol为非空值情况下进行填充这是 JPA,您不直接处理连接列和表,而是在对象之间建立关联。

如果您希望新创建的用户具有id=1默认分配的角色,您应该相应地修改您的服务:

@Override
@Transactional
public void save(User user) {
    user.setRol(roleDao.getOne(1l));
    userDAO.save(user);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

列不能为空 - 过程

来自分类Dev

MySQLIntegrityConstraintViolationException: 列 '' 不能为空

来自分类Dev

JPA:列“ AdressId”不能为空

来自分类Dev

MySQLIntegrityConstraintViolationException:列“id”不能为空

来自分类Dev

列 postqs_id 不能为空

来自分类Dev

Django:(1048,“列'user_id'不能为空”)

来自分类Dev

MySQLIntegrityConstraintViolationException:列不能为空-用于查找表

来自分类Dev

1048,“列user_ID的“不能为空”

来自分类Dev

ActiveRecord :: NotNullViolation-Mysql2列不能为空

来自分类Dev

MYSQL-错误1048(23000):列不能为空

来自分类Dev

Rails has_many索引列不能为空

来自分类Dev

FOS用户创建时,列“ salt”不能为空

来自分类Dev

Laravel:发现错误 - [23000]:列“名称”不能为空

来自分类Dev

准备好的语句:列不能为空

来自分类Dev

违反完整性约束:1048列“ taggable_id”不能为空

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1048列“ post”不能为空

来自分类Dev

django-registration(1048,“列'last_login'不能为空”)

来自分类Dev

违反完整性约束:1048列“ user_id”不能为空

来自分类Dev

django.db.utils.IntegrityError:(1048,“列'create_timestamp'不能为空”)

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1048列'matricule_per'不能为空

来自分类Dev

Node.js 405(不允许使用方法)和列不能为空MySQL

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1048列“ firstName”不能为空(23000)

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1048列“ image”不能为空

来自分类Dev

冬眠。使用外键将对象保存到数据库。MySQLIntegrityConstraintViolationException:列不能为空

来自分类Dev

MySQL触发器?导致错误代码:1048列不能为空

来自分类Dev

Excel:验证规则,其值应在另一列的列表中,不能为空

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1048列“ cat_id”不能为空

来自分类Dev

SQLSTATE[23000]:违反完整性约束:1048 列“image_url”不能为空

来自分类Dev

Django Rest Framework - 列“brith_date”不能为空(如果不是)

Related 相关文章

  1. 1

    列不能为空 - 过程

  2. 2

    MySQLIntegrityConstraintViolationException: 列 '' 不能为空

  3. 3

    JPA:列“ AdressId”不能为空

  4. 4

    MySQLIntegrityConstraintViolationException:列“id”不能为空

  5. 5

    列 postqs_id 不能为空

  6. 6

    Django:(1048,“列'user_id'不能为空”)

  7. 7

    MySQLIntegrityConstraintViolationException:列不能为空-用于查找表

  8. 8

    1048,“列user_ID的“不能为空”

  9. 9

    ActiveRecord :: NotNullViolation-Mysql2列不能为空

  10. 10

    MYSQL-错误1048(23000):列不能为空

  11. 11

    Rails has_many索引列不能为空

  12. 12

    FOS用户创建时,列“ salt”不能为空

  13. 13

    Laravel:发现错误 - [23000]:列“名称”不能为空

  14. 14

    准备好的语句:列不能为空

  15. 15

    违反完整性约束:1048列“ taggable_id”不能为空

  16. 16

    SQLSTATE [23000]:违反完整性约束:1048列“ post”不能为空

  17. 17

    django-registration(1048,“列'last_login'不能为空”)

  18. 18

    违反完整性约束:1048列“ user_id”不能为空

  19. 19

    django.db.utils.IntegrityError:(1048,“列'create_timestamp'不能为空”)

  20. 20

    SQLSTATE [23000]:违反完整性约束:1048列'matricule_per'不能为空

  21. 21

    Node.js 405(不允许使用方法)和列不能为空MySQL

  22. 22

    SQLSTATE [23000]:违反完整性约束:1048列“ firstName”不能为空(23000)

  23. 23

    SQLSTATE [23000]:违反完整性约束:1048列“ image”不能为空

  24. 24

    冬眠。使用外键将对象保存到数据库。MySQLIntegrityConstraintViolationException:列不能为空

  25. 25

    MySQL触发器?导致错误代码:1048列不能为空

  26. 26

    Excel:验证规则,其值应在另一列的列表中,不能为空

  27. 27

    SQLSTATE [23000]:违反完整性约束:1048列“ cat_id”不能为空

  28. 28

    SQLSTATE[23000]:违反完整性约束:1048 列“image_url”不能为空

  29. 29

    Django Rest Framework - 列“brith_date”不能为空(如果不是)

热门标签

归档