Link to home
Create AccountLog in
Avatar of gudii9
gudii9Flag for United States of America

asked on

HQL Max function not working

Hi,

I am trying to get Max value using HQL but getting errors as below. Please advoise



hibernat config looks as below

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
  <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
  <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/hibernatedb</property>
  <property name="hibernate.connection.username">postgres</property>
  <property name="hibernate.connection.password">root</property>
  <property name="hibersnate.connection.pool_size">10</property>
  <property name="show_sql">true</property>
  <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
  <property name="hibernate.hbm2ddl.auto">update</property>
  <mapping class="org.gp.gpr.dto.UserDetails"/>  
   <mapping class="org.gp.gpr.dto.Vehicle"/>
   <mapping class="org.gp.gpr.dto.TwoWheeler"/>
   <mapping class="org.gp.gpr.dto.FourWheeler"/>
   </session-factory>
</hibernate-configuration>



client java looks like below
package org.gp.gpr.hibernate;

import java.util.Date;
import java.util.List;

import org.gp.gpr.dto.Address;
import org.gp.gpr.dto.FourWheeler;
import org.gp.gpr.dto.TwoWheeler;
import org.gp.gpr.dto.UserDetails;
import org.gp.gpr.dto.Vehicle;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateTestHQL {

      public static void main(String[] args){



            SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
            Session session=sessionFactory.openSession();
            session.beginTransaction();

            //Query query=session.createQuery("select userName from UserDetails");
            Query query=session.createQuery("select max(userId) from UserDetails");
            //Query query=session.createQuery("from UserDetails where userid>0");
      //      List user=query.list();
            //query.setFirstResult(5);
            //query.setMaxResults(4);
                  //List<UserDetails> user=(List<UserDetails>)query.list();
            List<String> userNames=(List<String>)query.list();
            session.getTransaction().commit();
            session.close();
      //      System.out.println("size of list"+user.size());
      
            for(String u: userNames)
                  System.out.println(u);
      }
}


package org.gp.gpr.dto;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.annotations.CollectionId;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;

//import org.hibernate.annotations.Entity;

@Entity
@org.hibernate.annotations.Entity(selectBeforeUpdate=true)
public class UserDetails {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int userId;
private String userName;

public int getUserId() {
      return userId;
}
public void setUserId(int userId) {
      this.userId = userId;
}

public String getUserName() {
      return userName+"from get";
}


public void setUserName(String userName) {
      this.userName = userName;
}




}


I am getting below error.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Hibernate: select max(userdetail0_.userId) as col_0_0_ from UserDetails userdetail0_
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
      at org.gp.gpr.hibernate.HibernateTestHQL.main(HibernateTestHQL.java:38)

Please advise how to fix

Please advise. Any ideas, resources, sample code highly appreciated. thanks in advance
MaxHQL.jpg
ASKER CERTIFIED SOLUTION
Avatar of chaitu chaitu
chaitu chaitu
Flag of India image

Link to home
membership
Create an account to see this answer
Signing up is free. No credit card required.
Create Account
SOLUTION
Avatar of Sathish David  Kumar N
Sathish David Kumar N
Flag of India image

Link to home
membership
Create an account to see this answer
Signing up is free. No credit card required.
Create Account