此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【jrg9522】截止到2008-07-05 11:21:15的历史汇总数据(不包括此帖):
发帖的总数量:13                       发帖的总分数:480                      
结贴的总数量:12                       结贴的总分数:380                      
无满意结贴数:4                        无满意结贴分:110                      
未结的帖子数:1                        未结的总分数:100                      
结贴的百分比:92.31 %               结分的百分比:79.17 %                  
无满意结贴率:33.33 %               无满意结分率:28.95 %                  
值得尊敬

解决方案 »

  1.   


    子查询就是这么写,sql怎么写,hibernate就怎么写
    只能说你的错误不在这,贴出你的错误信息
      

  2.   

    抛出异常信息是这样子。
    org.hibernate.QueryException: could not resolve property: clientid of: com.wapweb.hib.TbXinghao [from com.wapweb.hib.TbClient c where c.id = (select x.clientid from com.wapweb.hib.TbXinghao x where x.id = ?)]
    org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
    org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
    org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1358)
    org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279)
    org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:386)
    org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:566)
    org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:241)
    org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:188)
    org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
    org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
    org.hibernate.hql.ast.tree.DotNode.resolveSelectExpression(DotNode.java:626)
    org.hibernate.hql.ast.HqlSqlWalker.resolveSelectExpression(HqlSqlWalker.java:739)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:1885)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1825)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1394)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4049)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3528)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
    org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
    org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
    org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
    com.wapweb.hib.TbClientDAO.getClientByXhId(TbClientDAO.java:183)
    com.wapweb.service.PhoneService.getClientByXhId(PhoneService.java:37)
    com.wapweb.struts.action.GetclinetbyidAction.execute(GetclinetbyidAction.java:46)
    org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      

  3.   

    表结构是CREATE TABLE `tb_client` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(45) NOT NULL,
      `clienturl` varchar(45) NOT NULL,
      PRIMARY KEY (`id`)
    )CREATE TABLE `tb_pinpai` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(45) NOT NULL,
      PRIMARY KEY (`id`)
    )CREATE TABLE `tb_xinghao` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(45) NOT NULL,
      `picurl` varchar(45) NOT NULL,
      `ppid` int(10) unsigned NOT NULL,
      `clientid` int(10) unsigned NOT NULL,
      PRIMARY KEY (`id`),
      KEY `FK_tb_xinghao_1` (`ppid`),
      KEY `FK_tb_xinghao_2` (`clientid`),
      CONSTRAINT `FK_tb_xinghao_2` FOREIGN KEY (`clientid`) REFERENCES `tb_client` (`id`),
      CONSTRAINT `FK_tb_xinghao_1` FOREIGN KEY (`ppid`) REFERENCES `tb_pinpai` (`id`)
    )
      

  4.   

    我明白了。
    clientid是外键。不能这么写。
    应该这么些。
    from TbClient c where c.id = (select tbClient from TbXinghao x where x.id = ?)ok了。
      

  5.   

    你的TbXinghao 类里面根本没有clientid这个属性,你那么写当然不行
    如果有主外键关联的话,你这么写没必要,可以这样
    如果是多对一
    select tbc form TbXinghao tbx inner join fetch tbx.tbClient tbc如果是一对多
    select tbc form TbXinghao tbx inner join fetch tbx.tbClients tbc