hibernate查询

ijxebb2r  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(456)

这是层列表的方法,

public List<PortfolioMemberView> getPortfolioMemberViewByPid(Integer pid){
    //check the portfolioId value in console
    System.out.print(pid);
    try {
        Session session = sessionFactory.getCurrentSession();
        String sql = "from PortfolioMemberView pv where pv.portfolioId = ?0";
        Query query = session.createQuery(sql).setParameter(0, pid);
        List<PortfolioMemberView> pmvl = query.list();
        //check the result list by assetCode in console
        for(PortfolioMemberView pv: pmvl){
            System.out.print(pv.getAssetCode());
        }
        return pmvl;
    }catch(Exception e){
        logger.info("操作失败:"  + e.getMessage() + ", " +e.getCause());
        throw new RuntimeException();
    }

我在数据库中创建了一个视图portfoliomemberview,它包含以下数据
英迈
当我调用该方法时,控制台将打印以下结果。

2
Hibernate: select portfoliom0_.portfolioId as portfoli1_8_, 
portfoliom0_.assetId as assetId2_8_, portfoliom0_.accountType as accountT3_8_, portfoliom0_.assetCode as assetCod4_8_, portfoliom0_.assetLabel as assetLab5_8_, portfoliom0_.value_ as value_6_8_, portfoliom0_.annualReturn as annualRe7_8_, portfoliom0_.returnRate as returnRa8_8_ from PortfolioMemberView portfoliom0_ where portfoliom0_.portfolioId=?
CMPROP0121CMPROP0121CMPROP0121CMPROP0121CMPROP0121

预期的结果应该是cmprop0121ckbgyck,因为当portfolioid=2时,结果列表中三个对象的assetcode应该是cmprop0121、kckb、gyck。
我还复制了生成的查询hibenate并在mysql数据库上运行,结果是正确的。

Hibernate: select portfoliom0_.portfolioId as portfoli1_8_, 
portfoliom0_.assetId as assetId2_8_, portfoliom0_.accountType as accountT3_8_, portfoliom0_.assetCode as assetCod4_8_, portfoliom0_.assetLabel as assetLab5_8_, portfoliom0_.value_ as value_6_8_, portfoliom0_.annualReturn as annualRe7_8_, portfoliom0_.returnRate as returnRa8_8_ from PortfolioMemberView portfoliom0_ where portfoliom0_.portfolioId=?

不知道怎么了,请帮忙!!!

lfapxunr

lfapxunr1#

我将portfolioidMap为primary id,primary id不能重复。但是很明显,主键是复制的。我做了另一个主键portfoliomemberid,问题就解决了

相关问题