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”);标准列表();这对我来说很好。你有任何答案帮助吗?你有任何答案帮助吗?