как использовать hibernate @EmbeddedId, когда я пытаюсь создать запрос вставки - PullRequest
1 голос
/ 26 января 2012

Я использую hibernate, и я создал объекты на стороне java, используя hibernates.Одна из моих таблиц БД имеет несколько столбцов в качестве первичного ключа, и hibernate использовал @EmbeddedId для решения этой проблемы.

Моя проблема заключается в том, что при создании запроса на вставку я получаю эту ошибку:

"nullid, сгенерированный для: class com.iu.eblood.model.Eventtypeofevent "

, чтобы установить Id, мне нужно создать объект для этого EmbeddedId, и когда я создаю и устанавливаю этот 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 голосов
/ 29 февраля 2012

Я использовал @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;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...