Legacy db: JoinColumnsOrFormulas и композитный идентификатор и наследование - PullRequest
2 голосов
/ 26 января 2012

Я тренируюсь, чтобы нанести на карту legacy db.

@Entity
public class ProcessPoint extends GenericModel {

    @Id
    @GeneratedValue
    @Column(name = "zkodid")
    public Long id;

    @ManyToOne
    @JoinColumnsOrFormulas({
        @JoinColumnOrFormula(column = @JoinColumn(name = "TELTXT", insertable = false, updatable = false, referencedColumnName = "id")),
        @JoinColumnOrFormula(formula = @JoinFormula(value = MeasurementLongName.TYP_TABLICY, referencedColumnName = "typ_tablicy"))
    })
    public MeasurementLongName measurementLongName;
    ...
}

MeasurementLongName

@Entity
@DiscriminatorValue(value=MeasurementLongName.TYP_TABLICY)
public class MeasurementLongName extends SystemName {
    public static final String TYP_TABLICY = "23";
}

@Entity
@Table(name = "BAZA_NAZW")
@Inheritance
@DiscriminatorColumn(name="typ_tablicy")

@org.hibernate.annotations.Filter(
      name = "limitByLang",
      condition="lang_id = :currentLang"
  )
@IdClass(SystemNameId.class)
public class SystemName extends GenericModel {

@Id
public Long id;

@Id
@Column(insertable = false, updatable = false)
public int typ_tablicy;

@Column(name = "opis")
public String description;

@Override
public String toString() {
    return description;
}

BAZA_NAZW:

@Entity
@Table(name = "BAZA_NAZW")
@Inheritance
@DiscriminatorColumn(name="typ_tablicy")

@org.hibernate.annotations.Filter(
  name = "limitByLang",
  condition="lang_id = :currentLang"
  )
@IdClass(SystemNameId.class)
public class SystemName extends GenericModel {

@Id
public Long id;

@Id
@Column(insertable = false, updatable = false)
public int typ_tablicy;

@Column(name = "opis")
public String description;

@Override
public String toString() {
    return description;
}

Когда я пытаюсь сделать запрос:

  List<ProcessPoint> processPoints = ProcessPoint.find("station", station).fetch();

Я получил: Обнаружено исключение javax.persistence.PersistenceException, org.hibernate.HibernateException: текст SqlNode не ссылается на ожидаемое количество столбцов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...