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

Spring data JPA一对多/多对一不在数据库中插入/更新详细信息

万浩淼
2023-03-14
@Entity
@Table(name = "teachers")
@PrimaryKeyJoinColumn(name = "user_id")
public class Teacher extends User {

@Size(min = 3, max = 50)
    @Column(name = "first_name")
    private String firstName;

    @Size(min = 3, max = 50)
    @Column(name = "middle_name")
    private String middleName;

    @Size(min = 3, max = 50)
    @Column(name = "last_name")
    private String lastName;

    @OneToMany(fetch = FetchType.LAZY,mappedBy = "teacher")
    @JsonManagedReference
    private Set<Address> addresses = new HashSet<>(0);

   Getter Setter...
}
@Entity
@Table(name = "address")
public class Address {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "address_id")
    private Long addressId;

    @ManyToOne (fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id", nullable = false)
    @JsonBackReference
    private Teacher teacher;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "country_id", referencedColumnName = "country_id")
    private Country country;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "state_id", referencedColumnName = "state_id")
    private State state;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "district_id", referencedColumnName = "district_id")
    private District district;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "tahasil_id", referencedColumnName = "tahasil_id")
    private Tahasil tahasil;

    @Column(name = "line_one")
    private String lineOne;

    @Column(name = "line_two")
    private String lineTwo;

    @Column(name = "landmark")
    private String landmark;

    @Column(name = "pincode")
    private Integer pincode;

    public Country getCountry() {
        return country;
    }
    Other Getter Setter
@Entity
@Table(name = "countries", uniqueConstraints = { @UniqueConstraint(columnNames = { "country_name" }) })
public class Country {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "country_id")
    private Long countryId;

    @NotBlank
    @Size(min = 3, max = 50)
    @Column(name = "country_name")
    private String countryName;

    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "country")
    private Address address;

    Getter Setter
    Optional<Teacher> teacher = teacherRepo.findByUserId(id);

        if (!teacher.isPresent())
            return ResponseEntity.notFound().build();

        teacher.get().setUserId(id);
        teacher.get().setFirstName(teacherUpdateForm.getFirstName());
        teacher.get().setMiddleName(teacherUpdateForm.getMiddleName());
        teacher.get().setLastName(teacherUpdateForm.getLastName()); 
        teacher.get().setAddresses(teacherUpdateForm.getAddresses());
        userRepository.save(teacher.get());

尝试这样可以通过引用多个站点和读数的方式,但仍然无法看到任何插入或更新到地址表。请帮我弄清我的错误。

问好,切坦

共有1个答案

微生自怡
2023-03-14

您需要级联教师实体的持久化。

更新教师实体内部属性地址的定义:

@OneToMany(fetch = FetchType.LAZY,mappedBy = "teacher", cascade = CascadeType.ALL)
@JsonManagedReference
private Set<Address> addresses = new HashSet();

您可以随意使用cascade类型值。

 类似资料:
  • 问题内容: 我试图在 Flask-SQLAlchemy中 建立多对多关系,但似乎我不知道如何填写 “多对多标识符数据库” 。您能帮我了解我在做什么错以及应该怎么看吗? 然后是我的标识符数据库: 到目前为止,当我尝试将数据插入数据库时​​,看起来像这样。 现在我的问题是,由于我真的无法创建“ student_identifier”对象,如何将其添加到多对多数据库?如果可以的话,它可能看起来像这样:

  • 本文向大家介绍Django 多对多字段的更新和插入数据实例,包括了Django 多对多字段的更新和插入数据实例的使用技巧和注意事项,需要的朋友参考一下 表的普通字段 一对多字段 多对多字段 插入数据 表的普通字段 一对多字段 多对多字段 修改数据 补充知识:Django的ManyToManyField(多对多)的使用以及through的作用 创建一个经典的多对多关系:一本书可以有多个作者,一个作者

  • Iam在数据库中插入时出现异常 下面的persistence.xml。 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd“version=”1.0“>

  • 本文向大家介绍详解sql中的参照完整性(一对一,一对多,多对多),包括了详解sql中的参照完整性(一对一,一对多,多对多)的使用技巧和注意事项,需要的朋友参考一下 一、参照完整性 参照完整性指的就是多表之间的设计,主要使用外键约束。 多表设计: 一对多、多对多、一对一设计 1.一对多 关联主要语句: constraint cus_ord_fk foreign key (customer_id) R

  • 我定义了2个具有单向一对多关系的实体: 在command.class中: 在StockDetails.class中: null

  • 我有两个实体类 它与另一个实体有一种外国的关键关系 每当我尝试在TrackingItemData表中插入一行时,该行没有被插入,但是房间返回一个长值,这是我的dao 我像这样插入数据 rx java的throwable没有捕获任何异常,代码打印长值,但是当我从emulator下载db并看到表时,我在其中找不到一行,dao的getAllTrackingItems()返回0行,我做错了什么?