Отображение Hibernate OnetoOne с двумя значениями поиска - PullRequest
1 голос
/ 08 марта 2011

У меня есть класс, который имеет два значения поиска (одно для имени и одно для типа)

public class someAttr {
private Long someAttrId;
private Long projectId;

private Lookup typeLookupValue;
private Lookup nameLookupValue;

getters & setter...

@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name = "type_lk_id", referencedColumnName = "lk_id", insertable = false, updatable = false)
public LookupValue getTypeLookupValue() {
    return typeLookupValue;
}

public void setTypeLookupValue(Lookup typeLookupValue) {
    this.typeLookupValue= typeLookupValue;
}

@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name = "name_lk_id", referencedColumnName = "lk_id", insertable = false, updatable = false)
public LookupValue getNameLookupValue() {
    return nameLookupValue;
}

public void setNameLookupValue(Lookup nameLookupValue) {
    this.nameLookupValue= nameLookupValue;
}

Проблема в том, что один и тот же name_lk_id используется разными объектами someAttr. Каждый раз, когда я запускаю его, я получаю: "org.hibernate.HibernateException: найдено несколько строк с данным идентификатором".

Могу ли я получить nameLookupValue, которое принадлежит определенному объекту someAttr с projectId вместо получения нескольких объектов Lookup с одним и тем же "lk_id" ??

1 Ответ

2 голосов
/ 08 марта 2011

Один экземпляр someAttr связан с двумя экземплярами значения Lookup.Это не отношения один-к-одному.Для этого вам нужно использовать отношения «один ко многим».Внутри вашего класса могут быть вспомогательные методы для извлечения экземпляра Lookup поиска approrpiate из списка / набора.

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