Java:(List <object>)getCurrentSession()做什么? (奇怪的语法)</object>

时间:2013-09-17 13:38:23

标签: java spring hibernate

这是我在DAO类中遇到的一行:

pages.addAll((List<Page>)getCurrentSession()
        .createCriteria(Page.class)
        .add(Restrictions.eq("path", pagePath))
        .setMaxResults(1).list());

我从未在一组括号后面看到方法调用,两者之间没有点。它只是一个可选的不同语法,还是除了让sessionList相关联之外还做了什么?

(注意:在这里使用Java / Spring和Hibernate @Transactional业务)

编辑:更新到完整的代码行,没有意识到它是重要的。大多数情况下,我被类似方法的语法抛出而没有点。

2 个答案:

答案 0 :(得分:2)

简言之,声明

getCurrentSession().createCriteria(Page.class)
    .add(Restrictions.eq("path", pagePath))
    .setMaxResults(1).list()

返回List,然后将其转换为

List<Page>

然后,将转换的对象传递给page.addAll()方法。

答案 1 :(得分:1)

很可能你错过了完整的一行

(List<Object>) getCurrentSession().createCriteria(Page.class).list();

从数据库返回Page个对象(pojo)的列表。

你的行

pages.addAll((List<Page>)getCurrentSession().createCriteria(Page.class)
        .add(Restrictions.eq("path", pagePath))
        .setMaxResults(1).list()); 

1)pages是一个列表

2)

 (List<Page>)getCurrentSession()
                .createCriteria(Page.class)
                .add(Restrictions.eq("path", pagePath))
                .setMaxResults(1).list()

此处标准对象上的list()方法返回一个对象列表,在这里您将它们转换回Page对象,因为您知道它们是Page对象

是获取

的标准

3)addAll方法将所有结果添加到pages