1

I m using hibernate 3 with hilo key generator and Postgres 9.3.Table column is BIGINT and model class variable is long(java).

From back-end no issue but when i try to save from front-end console are showing Bad Integer '2147483649' error. Table schema is:

CREATE TABLE user_log
(
  id bigint NOT NULL,
  appuser_id bigint,
  user_role_id bigint,
  login_time timestamp without time zone,
  logout_time timestamp without time zone,
  logged_in_ip character varying(32),
  CONSTRAINT user_log_pkey PRIMARY KEY (id),
  CONSTRAINT fk_app_user FOREIGN KEY (appuser_id)
      REFERENCES app_user (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_user_role FOREIGN KEY (user_role_id)
      REFERENCES user_role (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

Model class:

public class UserLog extends ModelBase {

/** identifier field */
private Long id;

/** persistent field */
private AppUser user;

/** nullable persistent field */
private Date loginTime;

/** nullable persistent field */
private Date logoutTime;

/** nullable persistent field */
private UserRole loggedInRole;

/** nullable persistent field */
private String loggedInIP;

/**
 * @hibernate.id generator-class="hilo"  column="id"
 * 
 */
public Long getId() {
    return this.id;
}

public void setId(Long id) {
    this.id = id;
}

/**
 * @hibernate.many-to-one
 * @hibernate.column name="user_role_id"
 * 
 */
public UserRole getLoggedInRole() {
    return loggedInRole;
}

public void setLoggedInRole(UserRole loggedInRole) {
    this.loggedInRole = loggedInRole;
}

/**
 * @hibernate.property column="login_time" type="java.util.Date"
 * 
 */
public Date getLoginTime() {
    return loginTime;
}

public void setLoginTime(Date loginTime) {
    this.loginTime = loginTime;
}

/**
 * @hibernate.property column="logout_time" type="java.util.Date"
 * 
 */
public Date getLogoutTime() {
    return logoutTime;
}

public void setLogoutTime(Date logoutTime) {
    this.logoutTime = logoutTime;
}

/**
 * @hibernate.many-to-one
 * @hibernate.column name="appuser_id"
 * 
 */
public AppUser getUser() {
    return user;
}

public void setUser(AppUser user) {
    this.user = user;
}

/**
 * @hibernate.property column="logged_in_IP" length="32"
 * 
 */
public String getLoggedInIP() {
    return loggedInIP;
}

public void setLoggedInIP(String loggedInIP) {
    this.loggedInIP = loggedInIP;
}

}

Error stack trace:

 org.postgresql.util.PSQLException: Bad Integer 2147483649
    at org.postgresql.jdbc1.AbstractJdbc1ResultSet.toInt(AbstractJdbc1ResultSet.java:857)
    at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:282)
    at org.apache.commons.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:186)
    at org.hibernate.id.TableGenerator.doWorkInCurrentTransaction(TableGenerator.java:140)
    at org.hibernate.engine.TransactionHelper$1Work.doWork(TransactionHelper.java:38)
    at org.hibernate.engine.transaction.Isolater$JdbcDelegate.delegateWork(Isolater.java:187)
    at org.hibernate.engine.transaction.Isolater.doIsolatedWork(Isolater.java:43)
    at org.hibernate.engine.TransactionHelper.doWorkInNewTransaction(TransactionHelper.java:51)
    at org.hibernate.id.TableGenerator.generate(TableGenerator.java:94)
    at org.hibernate.id.TableHiLoGenerator.generate(TableHiLoGenerator.java:62)
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
    at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
    at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
    at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
    at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:541)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:312)
    at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:538)
    at com.dimensionsgroup.campus.core.dao.impl.CampusDaoSupport.create(CampusDaoSupport.java:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:288)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
    at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:51)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
    at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:51)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
    at $Proxy9.create(Unknown Source)
    at com.dimensionsgroup.campus.common.action.LoginAction.go(LoginAction.java:137)
    at com.dimensionsgroup.campus.common.action.AbstractAction.execute(AbstractAction.java:113)
    at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
    at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.intercept(DefaultWorkflowInterceptor.java:55)
    at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
    at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
    at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
    at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
    at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
    at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
    at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
    at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
    at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
    at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
    at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
    at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115)
    at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)
    at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
Suraj
  • 89
  • 1
  • 2
  • 11

2 Answers2

0

The error happens when Hibernate tries to create a new id for the user_log table.

In your app Hibernate uses org.hibernate.id.TableGenerator to generate Ids which in turn wants to return a integer. This leads to the exception since the next available id is bigger than Integer.MAX_VALUE.

Seems that you are using a Hibernate version < 3.5 since the Javadoc says:

Again, the return types supported here are any of the ones supported by IntegralDataTypeHolder. This is new as of 3.5. Prior to that this generator only returned Integer values.

So even if you used the right datatypes in your table and in your POJO the TableGenerator can only return integers, unless you update to a newer Hibernate version.

wero
  • 32,544
  • 3
  • 59
  • 84
  • As per my current debugging i fount that problem with hibernate_unique_key table its not taking greater than value of integer. – Suraj Sep 11 '15 at 08:08
  • As per my current debugging i fount that problem with hibernate_unique_key table, its not taking value which greater from integer. When hibernate found BIGINT value in "hibernate_unique_key" (next_hi) it throw error Bad Integer . I think internal manipulation for key generation is running with Integer parameters.But i dont know how to change this. – Suraj Sep 11 '15 at 08:18
0

after changing hibernate version 3.0 to 3.2 problem solved.

Suraj
  • 89
  • 1
  • 2
  • 11