休眠:如何基于作为关联映射一部分的外键列选择单个项目?

| 你好 所以...我有以下对象:
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
的外键。 我想做的是从给定的
Address
ID中获取
Person
对象...但是我似乎无法弄清楚正确的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上的属性的映射。每次尝试添加一个列时,都会出现一个异常,说我两次使用同一列?我看不出这有什么问题:)。 无论如何,获取给定地址的人的最佳方法是什么?任何帮助,将不胜感激。     
已邀请:
        您应该能够做到这一点
Query query = this.session.createQuery(\"select p from Person as p where p.address=:address\")
            .setParameter(\"address\",address); 
    

要回复问题请先登录注册