当前位置: 首页 > 知识库问答 >
问题:

Spring Jpa-hibernate在数据库中保存一行空值

舒永嘉
2023-03-14

spring boot jpa/hibernate中的一个简单保存在数据库中保存了一行空值。

package rest.api.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;

import javax.persistence.*;
import java.sql.Blob;
import java.sql.Date;


@Entity
@Table(name="user")
public class User {

    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(name="id")
    private @JsonIgnore Long id;

    @Column(name="created")
    private Date created;

    @Column(name="latitude")
    private @JsonIgnore
    Float latitude;

    @Column(name="longitude")
    private @JsonIgnore Float longitude;

    @Column(name="password")
    private @JsonIgnore String password;

    @Column(name="user_name")
    private @JsonIgnore String username;

    @Column(name="pic_thumbnail")
    private @JsonIgnore Blob picThumbnail;

    @Column(name="first_name")
    private @JsonIgnore String firstName;

    @Column(name="middle_name")
    private @JsonIgnore String middleName;
    @Column(name="last_name")
    private @JsonIgnore String lastName;

    @Column(name="location_of_residence")
    private @JsonIgnore String locationOfResidence;

    @Column(name="telephone")
    private @JsonIgnore String telephone;

    @Column(name="email")
    private @JsonIgnore String email;

    @Column(name="description")
    private @JsonIgnore String description;

    @Column(name="date_of_birth")
    private @JsonIgnore
    java.sql.Date dob = null;

    protected User () {}

    public User(Long id, Date created, Float latitude, Float longitude, String password, String username, Blob picThumbnail, String firstName, String middleName, String lastName, String locationOfResidence, String telephone, String email, String description, Date dob) {
        this.id = id;
        this.created = created;
        this.latitude = latitude;
        this.longitude = longitude;
        this.password = password;
        this.username = username;
        this.picThumbnail = picThumbnail;
        this.firstName = firstName;
        this.middleName = middleName;
        this.lastName = lastName;
        this.locationOfResidence = locationOfResidence;
        this.telephone = telephone;
        this.email = email;
        this.description = description;
        this.dob = dob;
    }


    // constructor for Logindetails
    public User(Long id, String username, String password, String email) {
        this.id = id;
        this.created = null;
        this.latitude = null;
        this.longitude = null;
        this.password = password;
        this.username = username;
        this.picThumbnail = null;
        this.firstName = null;
        this.middleName = null;
        this.lastName = null;
        this.locationOfResidence = null;
        this.telephone = null;
        this.email = email;
        this.description = null;
        this.dob = null;
    }

    public User(String username, String email, String password) {
    }

    public Long getId() {
        return id;
    }

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

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    public Float getLatitude() {
        return latitude;
    }

    public void setLatitude(Float latitude) {
        this.latitude = latitude;
    }

    public Float getLongitude() {
        return longitude;
    }

    public void setLongitude(Float longitude) {
        this.longitude = longitude;
    }

    public String getPassword() {
        return password;
    }

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

    public String getUsername() {
        return username;
    }

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

    public Blob getPicThumbnail() {
        return picThumbnail;
    }

    public void setPicThumbnail(Blob picThumbnail) {
        this.picThumbnail = picThumbnail;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getMiddleName() {
        return middleName;
    }

    public void setMiddleName(String middleName) {
        this.middleName = middleName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getLocationOfResidence() {
        return locationOfResidence;
    }

    public void setLocationOfResidence(String locationOfResidence) {
        this.locationOfResidence = locationOfResidence;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getEmail() {
        return email;
    }

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

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getDob() {
        return dob;
    }

    public void setDob(Date dob) {
        this.dob = dob;
    }
}

@Repository公共接口用户存储库扩展了分页和排序存储库 {

}

package rest.api.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import rest.api.data.repository.UserRepository;
import rest.api.entity.User;

import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;

@RestController
@Service
@Transactional
public class UserController  {

    private final UserRepository userDao;

    @Autowired
    public UserController(UserRepository userDao) {
        this.userDao = userDao;
    }

    @Transactional
    @RequestMapping(value = "/users/{user-id}", method = RequestMethod.GET)
    public ResponseEntity<Resource<User>> getSpecificModel(@PathVariable(value = "user-id") Long userId) {


        User specificUser = userDao.findOne(userId);

        Resource<User> resource = new Resource<>(specificUser, linkTo(methodOn(MessageController.class)
                .getSpecificModel(userId)).withSelfRel());


        return ResponseEntity.ok(resource);
    }

    @Transactional
    @RequestMapping(value = "/users/{user-id}", method = RequestMethod.DELETE)
    public long remove(@PathVariable(value = "user-id") long userId) {

        userDao.delete(userId);
        return userId;
    }

    @RequestMapping(value = "/users", method = RequestMethod.POST)
    public void registerLoginDetails(@RequestParam(name="username") String username,
                                     @RequestParam(name="email") String email,
                                     @RequestParam(name="password") String password) {

        User loginDetails = new User(username, email, password);

        userDao.save(loginDetails);
    }

    @Transactional
    @RequestMapping(value = "/profile", method = RequestMethod.POST)
    public void registerPersonalDetails() {

    }
}

我的用户表中的每一列都可以为空,因此允许在这种状态下保存记录。我通过手动对数据库执行等效查询来检查这一点。

有人有什么想法吗?

共有1个答案

柯国安
2023-03-14

一个明显的错误是用于注册用户的User中的构造函数没有分配传入的用户名电子邮件密码参数。

 类似资料:
  • 我是Hibernate的新手,并要求使用具有这些列的表的数据库 表:TBL _ product//库存项目列表< br >列:< br > key _ product < br > key _ category < br > fld _ product _ name < br > fld _ Inventory _ qty < br > fld _ unit _ price < br > fld

  • 我有一对一关系的问题-保存后,外键总是被设置为空,即使我有关联的对象。我正在使用Hibernate4.3。7.最终版本为Spring 4.0。0.0版本和MySql 5.6数据库。 在我保存LawFirmProfile对象列后的情况下,参考lawFirm的lawFirm_id始终为空。 实体: 以下是负责保存此记录的代码: Hibernate和Spring配置: 道也是Spring豆,方法注释为@

  • 我对春靴还不熟悉。 我正在使用H2、JPA、Lombok、Spring Web和DevTools构建Rest API。 我遇到了以下问题:在数据库中插入一个值时,它会收到一个id(好的,很好),而在保存另一个数据时,它会将其保存为null。 我的申请。属性: 我的控制器: 我的模型: 我的存储库: 使用json中的有效负载发出post请求时,它会生成id并将“nome”的值保存为null。 我手动

  • 问题内容: 我有一个模型对象,我想要一个带有日期的字段。目前,我正在使用适合我们需求的产品。 Hibernate将该字段以形式存储在数据库中。我们可以将其在数据库中的保存方式更改为更易读的格式,更重要的是将其更改为可排序的格式吗? 使用的数据库是mysql db。 问题答案: 这个问题已经解决了作为一种新的改进来 ,原来这是一个孤立的捆绑模块 现在,它直接捆绑,所以只要确保你使用的是最新的版本,它

  • 我有一个模型对象,我想在其中有一个带日期的字段。目前,我使用来满足我们的需要。 所使用的数据库是一个mysql数据库。

  • 我有一个关于在数据库中存储数据的问题。 我正在应用程序中的一些屏幕上工作:登录屏幕(用户可以访问你的帐户),注册屏幕(用户可以创建一个新帐户),用户提供信息的屏幕(比如“母亲的名字和身高”),以及配置文件屏幕(显示用户提供的信息)。 我在登录屏幕和注册屏幕中没有问题,但是我不知道如何在Firebase数据库中保存用户提供的信息,在用户提供信息的屏幕中。 你们谁能帮我一下吗?我知道我可以使用fire