Алло,
Итак ... У меня есть следующие объекты:
public class Person {
// some other getters/setters omitted.
void setAddress(Address addy) {
// omitted
}
Address getAddress() {
// omitted
}
}
public class Address {
Integer getId() {
// omitted
}
}
И у меня есть следующие спящие отображения:
<class name="Person">
<id name="id" column="personId">
<generator class="native"/>
</id>
<many-to-one name="address"
column="addressId"
unique="true"
not-null="true"/>
</class>
<class name="Address">
<id name="id" column="addressId">
<generator class="native"/>
</id>
</class>
Таким образом, существует сопоставление один-к-одному от Person
до Address
, Person
имеет внешний ключ к Address
.
Я пытаюсь извлечь Person
объект из заданного Address
ID ... но я не могу понять правильный синтаксис HQL:
public Person getPersonFromAddress(Address address) {
Query query = this.session.createQuery("select p from Person as p where p.address_id = " + address.getId());
@SuppressWarnings("unchecked")
Person p = (Person)query.uniqueResult();
return p;
}
Я знаю, что у меня нет сопоставления столбца внешнего ключа со свойством Person. Каждый раз, когда я пытаюсь добавить один, я получаю исключение, говорящее, что я использую один и тот же столбец дважды? Я не вижу, что было бы не так с этим:).
В любом случае, каков будет лучший способ получить Человека с данным адресом? Любая помощь будет оценена.