基于属性映射hibernate集合

时间:2014-01-30 22:34:37

标签: java sql hibernate

我正在使用遗留数据库,我正试图让hibernate帮助我。

我有3个表格看起来像:

Table results:
id (number pk)
info_id (varchar)
result (varchar)

Table info
id (number pk)
info_id (varchar)

Table registration
id (number pk)

Table letter
id (number pk)
registration_id

我只能修改Object for letter,在这个对象中我希望能够获得一个(只读)结果列表

public class Letter  {
    private Long  id;
    private Registration registration;  
    private List<Result> results;
}

注册对象已存在,如下所示:

public class Registration  {
    private Long  id;
    private Info info;  
}

我正在尝试将结果对象映射到Letter对象,我正在尝试这样的事情:

<list name="results" table="result" cascade="none" inverse="false">
          <key property-ref="registration.info.info_id"/>
          <index column="info_id "  />
        <one-to-many class="Result" />
    </list>

我基本上希望Hibernate通过对象链进行连接,最终得到一个看起来像这样的SQL:

SELECT * FROM result,letter,info WHERE letter.info_id=info.info_id AND info.info_id=result.info_id
AND letter.id=?;

这样的东西在Hibernate中是否可行?

修改 表信息和注册具有相同的ID。所以info.id=registration.id。如果需要,我可以将Info添加到Letter对象中。

1 个答案:

答案 0 :(得分:0)

根据链接here。只能使用内部联接来维护关系。所以,是的,你可以做到。您可能需要手动将registration.id = info.id添加到查询中。