【问题标题】:Hibernate mapping REST CURED operationHibernate 映射 REST CURED 操作
【发布时间】:2018-02-24 10:51:51
【问题描述】:

我正在 REST 中开发一个 CURD 操作,但坚持使用休眠关系,当我执行 CURD 时没有任何工作正常。请帮帮我。 下面是问题:

@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。 CURD 和传递

提醒

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

【问题讨论】:

  • 你能分享你的服务类吗
  • 服务类为空,我都删除了,只是在调用DAO方法,请问映射是否正确?
  • 我想插入 Reminder 和 StaffRecord 并更新 StaffRecord 中的 id,但它也会通过 null 值更新 Staff 和 RecordType 的整个对象,我们正在传递 StaffId 和 RecordTypeID 以在 StaffRecord 中更新

标签: javascript rest jpa hibernate-mapping


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2010-11-27
    • 2011-07-23
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多