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

java-spring boot-hibernate-jpa(post@manytoone错误)

林修雅
2023-03-14

我有两个模型,一个为客户,一个为卖家,在客户表中,我只需要一个卖家,已经在卖家表中,我可以有几个客户为一个卖家。

但是当我试图添加一个新客户,设置销售人员的id,它就是不起作用。

代码如下:

    null

    package com.crud.spring.jpa.postgresql.model;
    
    import lombok.AllArgsConstructor;
    import lombok.Getter;
    import lombok.Setter;
    
    import javax.persistence.*;
    
    @Entity
    @AllArgsConstructor
    @Getter
    @Setter
    @Table(name = "sellers", uniqueConstraints = @UniqueConstraint(columnNames = "code"))
    public class Seller {
    
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Long id;
    
      @Column(name = "code")
      private long code;
    
      @Column(name = "name")
      private String name;
    
      public Seller(){
      }
    }

    null

    package com.crud.spring.jpa.postgresql.model;
    
    import com.fasterxml.jackson.annotation.JsonIgnore;
    import lombok.AllArgsConstructor;
    import lombok.Getter;
    import lombok.Setter;
    import org.hibernate.annotations.OnDelete;
    import org.hibernate.annotations.OnDeleteAction;
    
    import javax.persistence.*;
    
    @Entity
    @AllArgsConstructor
    @Getter
    @Setter
    @Table(name = "clients", uniqueConstraints = @UniqueConstraint(columnNames = "code"))
    public class Client {
    
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Long id;
    
      @Column(name = "code")
      private long code;
    
      @Column(name = "name")
      private String name;
    
      @ManyToOne(fetch = FetchType.LAZY, optional = false)
      @JoinColumn(name = "seller_id", referencedColumnName = "id", nullable = false)
      @OnDelete(action = OnDeleteAction.CASCADE)
      @JsonIgnore
      private Seller seller;
    
      public Client(){
      }
    }

    null

    @PostMapping("/clients")
    public ResponseEntity createClients(@RequestBody Client client) {
      return this.service.createClients(client);
    }

    null

    public ResponseEntity createClients(Client client) {
      try {
        client = this.repository.save(client);
    
        return new ResponseEntity(client, HttpStatus.OK);
      } catch (Exception e){
        return new ResponseEntity(e, HttpStatus.INTERNAL_SERVER_ERROR);
      }
    }

    null

  • 发布客户端:

  • 错误为:

“entityName”:“com.crud.spring.jpa.postgreql.model.client”,“propertyName”:“seller”,“message”:“not-null属性引用null或瞬态值:com.crud.spring.jpa.postgreql.model.client.seller”,“localizedMessage”:“not-null属性引用null或瞬态值:com.crud.spring.jpa.postgreql.model.client.seller”,“propertyName”:“not-null属性引用null或null或瞬态值:com.crud.spring.jpa.postgreql.model.client.seller”,在这里输入代码“localizedmessage”:“not-null属性引用null或瞬态值:com.crud.spring.jpa.postgreql.model.client.seller;嵌套异常是org.hibernate.propertyValueException:not-null属性引用null或瞬态值:com.crud.spring.jpa.postgreql.model.client.seller”,

共有1个答案

令狐新翰
2023-03-14

在json中尝试“seller”:{“id”:15}insted of“seller_id”:15

 类似资料:
  • 问题内容: 我目前正在阅读有关实体关联的Hibernate文档,但遇到一些困难却难以理解。它在本质上做的区别和联系。尽管我在实际项目中使用了它们,但是我无法完全理解它们之间的差异。据我了解,如果一个表/一个实体与另一个实体有关联,则该关联应来自另一侧。那么,我们应该如何根据具体情况决定选择哪个呢?它又如何影响数据库/查询/结果?到处都有很好的例子吗? PS:我认为这与问题相关,如果有人可以解释关联

  • 用户详细信息 有人能看出我做错了什么吗?

  • 我试图定义两个类之间的双向关系。拥有方是类测验,相反方是用户。一个用户可以创建许多测验,而一个测验只能有一个创建它的用户。我在网上找到的每一个教程都指出,在owning方面,您指定了ManyToOne注释和JoinColumn,在相反的方面,您使用owners字段的名称指定了OneToMany和mappedBy。然而,当我这样做时,IDE给了我一个错误“找不到逆关系”。我在这个概念上哪里出错了?如

  • 拥有2个实体:订单和产品。1个订单可以有多个产品,多个产品可以属于1个订单(每个产品只属于1个订单)。 尝试了@JsonIgnore。这不会返回子元素或父元素。尝试了@JsonManagedReference和@JsonBackReference-仍然没有成功。 请给我指点一下

  • 问题内容: 具有以下内容: 这是否意味着删除User对象会删除与其关联的Institution对象?如果是这种情况,我将不遵循为什么需要这样做。例如说该机构有很多用户。这是否意味着删除这些用户之一会删除该机构,在这种情况下,所有其他用户也会丢失该机构? 问题答案: 没错,很少(如果曾经)需要将CascadeType.REMOVE与ManyToMany或ManyToOne一起使用。在JPA 2.0规

  • 我正在做一个基本的例子来测试级联删除操作,但我得到了异常。这是我的实体