当我尝试创建插入查询时如何使用hibernate @EmbeddedId

时间:2012-01-26 17:31:06

标签: java hibernate

我正在使用hibernate,我使用hibernates在java端创建了实体。 我的一个数据库表有多个列作为主键,而hibernate使用@EmbeddedId来处理它。

我的问题是,当我创建一个插入查询时,我收到此错误:

“为...生成null id:类com.iu.eblood.model.Eventtypeofevent”

设置Id,我需要为此EmbeddedId创建一个objejt,当我创建并设置此Id时, 出现了另一个问题:

“目标名称”EVENTID“在同一SQL语句中被赋值多次”

我猜,错误的共鸣是我的Eventtypeofevent对象和EventtypeofeventPK对象(由hibernate为EmbeddedId创建的类)实际上显示了相同的属性。

这是我的班级:

@Entity
public class Eventtypeofevent implements Serializable {

    private static final long serialVersionUID = 1L;
    private EventtypeofeventPK id;
    private Timestamp createddate;
    private Timestamp deleteddate;
    private String isactive;
    private Event event;
    private Eventtype eventtype;

    public Eventtypeofevent() {
    }


    @EmbeddedId
    public EventtypeofeventPK getId() {
        return this.id;
    }

    public void setId(EventtypeofeventPK id) {
        this.id = id;
    }
....... getter and setter

和EmbeddedId的其他类:

    @Embeddable
public class EventtypeofeventPK implements Serializable {
    //default serial version id, required for serializable classes.
    private static final long serialVersionUID = 1L;
    private long eventid;
    private int eventtypeid;
...... getter and setter

1 个答案:

答案 0 :(得分:0)

我这样使用了@EmbeddedId,我不确定它是否有帮助:

@EmbeddedId
@AttributeOverrides({
  @AttributeOverride(name = "orgId", column = @Column(name = "ORG_ID", nullable = false,     precision = 12, scale = 0)),
  @AttributeOverride(name = "configId", column = @Column(name = "CONFIG_ID", nullable = false, precision = 9, scale = 0)) })
  public [EmbeddedId Object] getId() {
    return id;
  }