3

我有两个类:EmployeeAward,具有多对多关系。

尝试删除时出现约束违规错误。我浏览了所有帖子,但没有一个有用。

这是代码:

@Entity
@Table(name="TB_AWARD")
public class Award implements Serializable{


    @Id @GeneratedValue
    @Column(name="AWARD_ID")
    private long awardId;

    @ManyToMany(mappedBy="awards")
    @NotFound(action=NotFoundAction.IGNORE)
    private Collection<Employee> employee = new ArrayList<Employee>();

    @Column(name="AWARD_TYPE")
    private String awardType;

    @Column(name="AWARD_DATE")
    private Date awardDate;

    @Column(name="AWARD_DETAILS")
    @Lob
    private String awardDetails;

    @Column(name="REMARK")
    private String remark;

@Entity
@Table(name="TB_EMPLOYEE")
public class Employee implements Serializable {

    @Id @GeneratedValue
    @Column(name="EMPLOYEE_ID")
    private long employeeID;

        @ManyToMany(cascade= CascadeType.ALL)
    private Collection<Award> awards;
4

2 回答 2

1

你映射错了,试试这样:

@Entity
@Table(name="TB_AWARD")
public class Award implements Serializable{


    @Id @GeneratedValue
    @Column(name="AWARD_ID")
    private long awardId;

    @ManyToMany(targetEntity=Employee.class, cascade = CascadeType.ALL)
    @JoinTable(name = "AWARD_EMPLOYEE", joinColumns = { @JoinColumn(name ="AWARD_ID")},
    inverseJoinColumns = { @JoinColumn(name = "EMPLOYEE_ID") })
    @NotFound(action=NotFoundAction.IGNORE)
    private Collection<Employee> employees = new ArrayList<Employee>();

    @Column(name="AWARD_TYPE")
    private String awardType;

    @Column(name="AWARD_DATE")
    private Date awardDate;

    @Column(name="AWARD_DETAILS")
    @Lob
    private String awardDetails;

    @Column(name="REMARK")
    private String remark;

@Entity
@Table(name="TB_EMPLOYEE")
public class Employee implements Serializable {

    @Id @GeneratedValue
    @Column(name="EMPLOYEE_ID")
    private long employeeID;

    @ManyToMany(
    cascade = CascadeType.ALL,
    mappedBy = "employees",
    targetEntity = Award.class
    )
    private Collection<Award> awards; //create the getter for this guy

总是先看一下参考中的例子,它会让你的生活变得更轻松。;)

于 2012-07-26T21:34:36.100 回答
0

你从数据库而不是从休眠中获取它。当休眠删除时,它首先使引用无效。删除数据库约束。您还应该打开 hibernate sql 日志记录或在数据库分析器中查看 sql 以查看 hibernate 的作用。您将在那里看到导致约束冲突的 sql。

于 2012-07-26T19:31:27.090 回答