首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate映射REST治愈操作

Hibernate映射REST治愈操作
EN

Stack Overflow用户
提问于 2018-02-24 10:51:51
回答 1查看 91关注 0票数 0

我在REST中开发了一个CURD操作,但是坚持了hibernate关系,当我做CURD时,没有什么能正常工作。请帮帮我。以下是问题所在:

代码语言:javascript
复制
@Entity
@Table(name = "reminder")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "reminder")
//@JsonInclude(JsonInclude.Include.NON_NULL)
   public class Reminder implements Serializable {
    private static final long serialVersionUID = -1232395859408322328L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "reminder_id")
    private int reminderId;

    @JsonIgnore
    @OneToOne(mappedBy = "reminder", cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = true)
    private Contract contract;

    @JsonIgnore
    @OneToOne(mappedBy = "reminder", cascade = CascadeType.ALL, fetch = 
    FetchType.EAGER, optional = true)
    private Asset asset;

    //@JsonIgnore
    @OneToOne(mappedBy = "reminder", cascade = CascadeType.ALL, fetch = 
    FetchType.LAZY, optional = true)
    private StaffRecord staffRecords;

}


@Entity
@Table(name="staff_record")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "staff_record")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class StaffRecord implements Serializable
{
    private static final long serialVersionUID = -1232395859408322328L;


    //----- all database columns in Staff_Record table--------
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="staff_record_id")
    private int staffRecordId;

    //@JsonBackReference
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "reminder_id")
    private Reminder reminder;

    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    @JoinColumn(name="staff_id", referencedColumnName="staff_id")
    private Staff staffs;

    @ManyToOne(fetch = FetchType.EAGER,cascade=CascadeType.REMOVE)
    @JoinColumn(name = "record_type_id", referencedColumnName = "record_type_id")
    private RecordType rocrdType;
}


@Entity
@Table(name="staff")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "staff")
public class Staff implements Serializable
{
    private static final long serialVersionUID = -1232395859408322328L;


    //----- all database columns in Equipment table--------
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="staff_id")
    private int staff_Id;

    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE, optional=false)
    @JoinColumn(name="department_id" )
    private Department departments;

    @JsonIgnore
    @OneToMany(mappedBy="staffs", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    List<StaffRecord> staffRecords;

    @JsonIgnore
    @JoinColumn(name = "user_group_id")
    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private Groups userGroupId;

}

class RecordType{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "record_type_id")
private int recordTypeId;
// No Mapping
}

当创建,删除,更新,获取,我得到问题,我读了很多关于映射什么没有运气的文章。在我打电话的地方有一个RestController。腐朽与逝去

提醒

作为参数。我将创建一个RequestModel并使用getter setter,但是我想使用映射。

EN

回答 1

Stack Overflow用户

发布于 2019-02-12 12:41:34

我通过做以下更改来解决这个问题:

Reminder类中,不需要映射就可以将映射移动到相应的类。

Staff_Record类中,人员和record_Type映射都需要cascade= CascadeType.ALL

Staff类中,不需要staffRecords,因为我们已经在Staff类中映射了它们。

希望这会对其他人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48961996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档