Ma Tâm
Ma Tâm

Reputation: 307

Where statements for many to many relations hibernate

I have a database showing the relationship much more like this enter image description here I want to get information out of two table gmail and bloggerwith conditions blog[blogger] and user[gmail] value exists in table md_parse_blogger I want to know how to make a correct syntax where,please help me

public List showDatawebA(String blog, String url) {
        String sql = "FROM MdParse g,MdBlogger b,MdParseBlogger pb"
                + " WHERE pb.mdBlogger=:blog and pb.mdParse=:url";
        Query createQuery = currentSession.createQuery(sql);
        createQuery.setParameter("blog", blog);
        createQuery.setParameter("url", url);
        return createQuery.list();
    }

With mdBlogger,mdGmail is attribute class MdParseBlogger,

public class MdParseBlogger  implements java.io.Serializable {
     private MdParseBloggerId id;
     private MdBlogger mdBlogger;
     private MdParse mdParse;
     ...........
    }

ERROR

Exception in thread "main" org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2
    at org.hibernate.engine.query.spi.ParameterMetadata.getOrdinalParameterDescriptor(ParameterMetadata.java:89)
    at org.hibernate.engine.query.spi.ParameterMetadata.getOrdinalParameterExpectedType(ParameterMetadata.java:109)
    at org.hibernate.internal.AbstractQueryImpl.determineType(AbstractQueryImpl.java:507)
    at org.hibernate.internal.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:479)
    at dbUtility.DBTable.showDataweb(DBTable.java:76)
    at dbUtility.DBTable.main(DBTable.java:83)
Picked up _JAVA_OPTIONS: -Xmx512M

Upvotes: 2

Views: 99

Answers (1)

StanislavL
StanislavL

Reputation: 57421

You mixed named and ordinal parameters. It should be either

   String sql ="FROM MdGmail g,MdBlogger b,MdParseBlogger pb"
            + " WHERE pb.mdBlogger=? and pb.mdGmail=?";
    Query createQuery = currentSession.createQuery(sql);
    createQuery.setParameter(1, blog);
    createQuery.setParameter(2, url);

Or

   String sql ="FROM MdGmail g,MdBlogger b,MdParseBlogger pb"
            + " WHERE pb.mdBlogger=:blog and pb.mdGmail=:url";
    Query createQuery = currentSession.createQuery(sql);
    createQuery.setParameter("blog", blog);
    createQuery.setParameter("url", url);

Upvotes: 1

Related Questions