Я хочу использовать идентификаторы двух разных таблиц в качестве идентификатора третьей таблицы (hibernate, java, spring) - PullRequest
0 голосов
/ 29 июля 2011

У меня есть таблицы Owner и Species, оба объекта с автоматически сгенерированным идентификатором Столбец целого числа.

У меня есть третья таблица Cat, которую я хочу удалить из списка на основе идентификаторов двух предыдущих таблиц, поэтому я хочу сделать что-то вроде:

Session session = sessionFactory.getCurrentSession();
Cat cat = (Cat) session.get(Cat.class, owner.getId, species.id);

вместо

Cat cat = (Cat) session.get(Cat.class, id);

Какие аннотации мне нужны для классов сущностей? Я предполагаю, что это будет что-то вроде этого

    @EmbeddedId
    private CatId catId;

    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="ID", insertable=false, updateable=false)
    private Owner owner;

    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="ID", insertable=false, updateable=false)
    private Species species;

Ответы [ 2 ]

1 голос
/ 29 июля 2011
@ManyToOne
public Owner getOwner() {
   return owner;
}

@ManyToOne
public Species getSpecies() {
   return species;
}

Запрос:

Criteria crit = session.createCriteria(Cat.class);
crit.createAlias("owner", "ownerAlias");
crit.createAlias("species", "speciesAlias");
crit.add(Restrictions.eq("ownerAlias.id", ownerId);
crit.add(Restrictions.eq("speciesAlias.id", speciesId);
return crit.list();
0 голосов
/ 29 июля 2011

Не совсем ответ, но вам нужен составной идентификатор, и у меня было достаточно трудностей, чтобы в моих случаях использования я пропускал их, создавал синтетический идентификатор и просто добавлял ограничения уникальности для таблицы.

Кроме того, как вы разместили вопрос, мне кажется, что на один (владелец, вид) может быть не более одного кота (например, владелец не может иметь 2 кошек одного и того же вида). Если это не правильно, вам понадобится действительное удостоверение личности.

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