Java 遵循SQL的标准是什么?

Java 遵循SQL的标准是什么?,java,hibernate,jpa-2.0,hibernate-criteria,Java,Hibernate,Jpa 2.0,Hibernate Criteria,有人能帮我解答以下查询的条件吗: SELECT * From TableA Inner Join TableB On TableA.ID=TableB.ID 我尝试以下标准 Criteria criteria = session.createCriteria(TableA.class); criteria.setFetchMode("TableB", FetchMode.JOIN); 上述条件检索两个表数据 此外,如果我只需要表A中的特定列,标准将如何更改 谢谢你抽出时间 编辑:表格A和表格

有人能帮我解答以下查询的条件吗:

SELECT * From TableA Inner Join TableB On TableA.ID=TableB.ID
我尝试以下标准

Criteria criteria = session.createCriteria(TableA.class);
criteria.setFetchMode("TableB", FetchMode.JOIN);
上述条件检索两个表数据

此外,如果我只需要表A中的特定列,标准将如何更改

谢谢你抽出时间


编辑:表格A和表格B有一对多的关系。

这个问题没有意义。在hibernate中,这两个表实际上应该是实体,在这种情况下,它们之间应该有关系。您是否尝试随机加入两个表并返回结果?如果是这样,您必须使用sql并使用
ResultTransformer
将结果转换为对象

private ResultTransformer getResultsTransformer()
{
    ResultTransformer transformer = new AliasToBeanResultTransformer(
            MyResultBean.class) {
        @Override
        public Object transformTuple(Object[] values, String[] aliases)
        {
            MyResultBean row = new MyResultBean();
            for (int i = 0; i < aliases.length; i++)
            {
                row.set(aliases[i], values[i]);
            }
            return (row);
        }
    };
    return transformer;
}

我希望这有帮助。关于,这个问题毫无意义。在hibernate中,这两个表实际上应该是实体,在这种情况下,它们之间应该有关系。您是否尝试随机加入两个表并返回结果?如果是这样,您必须使用sql并使用
ResultTransformer
将结果转换为对象

private ResultTransformer getResultsTransformer()
{
    ResultTransformer transformer = new AliasToBeanResultTransformer(
            MyResultBean.class) {
        @Override
        public Object transformTuple(Object[] values, String[] aliases)
        {
            MyResultBean row = new MyResultBean();
            for (int i = 0; i < aliases.length; i++)
            {
                row.set(aliases[i], values[i]);
            }
            return (row);
        }
    };
    return transformer;
}

我希望这有帮助。关于,

使用
JOIN
,您需要指示Hibernate您只需要“根实体”,即tableA。将以下内容添加到代码中:

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

使用
JOIN
,您需要向Hibernate指示您只需要“根实体”,即tableA。将以下内容添加到代码中:

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

抱歉编辑了问题,从表A到表B有一对多关系。@Ritesh,答案已更新。它没有经过测试,但应该能让你大致了解你必须做什么。是的,你的方法是有效的,只需编辑addAlias到createAlias即可。但是我使用的是Criteria=getSession().createCriteria(TableAlass).createCriteria(“tableB”);标准列表();这对我来说很好。很抱歉编辑了这个问题,从表A到表B有一对多的关系。@Ritesh,答案已更新。它没有经过测试,但应该能让你大致了解你必须做什么。是的,你的方法是有效的,只需编辑addAlias到createAlias即可。但是我使用的是Criteria=getSession().createCriteria(TableAlass).createCriteria(“tableB”);标准列表();这对我来说很好。你有任何答案帮助吗?你有任何答案帮助吗?