Estou com um problema estranho do hibernate:
Eu tenho as classes:
@Entity
@Table(name="aloca_turma_sala")
public class Aloca implements Serializable{
@EmbeddedId
private AlocaPK id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="codcampus",insertable=false,updatable=false)
private Campus campus;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns(value={
@JoinColumn(name="codcampus",insertable=false,updatable=false),
@JoinColumn(name="codbloco",insertable=false,updatable=false)
})
private Bloco bloco;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="codpavimento",insertable=false,updatable=false)
private Pavimento pavimento;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns(value={
@JoinColumn(name="codcampus",insertable=false,updatable=false),
@JoinColumn(name="codbloco",insertable=false,updatable=false),
@JoinColumn(name="codpavimento",insertable=false,updatable=false),
@JoinColumn(name="codsala",insertable=false,updatable=false),
})
private Sala sala;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="codturma",insertable=false,updatable=false)
private Turma turma;
@Column(name="horainicio",insertable=false,updatable=false)
private String horaInicio;
@Column(name="horafim",insertable=false,updatable=false)
private String horaFim;
@Column(name="diasemana",insertable=false,updatable=false)
private String diaSemana;
//gets e sets omitidos
@Embeddable
public class AlocaPK implements Serializable{
@Column(name="codcampus")
private String codCampus;
@Column(name="codbloco")
private String codBloco;
@Column(name="codpavimento")
private Long codPavimento;
@Column(name="codsala")
private String codSala;
@Column(name="codturma")
private String codTurma;
@Column(name="horainicio")
private String horaInicio;
@Column(name="horafim")
private String horaFim;
@Column(name="diasemana")
private String diaSemana;
//gets e sets omitidos
@Entity
public class Sala implements Serializable{
@EmbeddedId
private SalaPK id;
@Column(name="capacidade")
private int capacidade;
@Column(name="arcondicionado")
private int arCondicionado;
@Column(name="ventilador")
private int ventilador;
@Column(name="ativo")
private String ativo;
@Column(name="dscsala")
@OrderBy
private String dscSala;
@Column(name="tipoquadro")
private String tipoQuadro;
@Column(name="datashow")
private String dataShow;
@ManyToOne
@JoinColumn(name="codtiposala")
private TipoSala tipoSala;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns(value={
@JoinColumn(name="codcampus",insertable=false,updatable=false),
@JoinColumn(name="codbloco",insertable=false,updatable=false),
@JoinColumn(name="codpavimento",insertable=false,updatable=false)
})
private Andar andar;
//gets e sets omitidos
public class SalaPK implements Serializable{
@Column(name="codsala")
private String codSala;
@Column(name="codcampus")
private String codCampus;
@Column(name="codbloco")
private String codBloco;
@Column(name="codpavimento")
private int codPavimento;
//gets e sets omitidos
No banco:
SQL> desc sala
Name Null? Type
------------------------------- -------- ----
CODSALA NOT NULL VARCHAR2(5)
CAPACIDADE NUMBER(5)
ARCONDICIONADO NUMBER(2)
VENTILADOR NUMBER(2)
ATIVO VARCHAR2(1)
DSCSALA VARCHAR2(50)
TIPOQUADRO VARCHAR2(20)
DATASHOW VARCHAR2(1)
CODCAMPUS NOT NULL VARCHAR2(2)
CODBLOCO NOT NULL VARCHAR2(1)
CODPAVIMENTO NOT NULL NUMBER(5)
CODTIPOSALA NOT NULL NUMBER(5)
SQL> desc aloca_turma_sala
Name Null? Type
------------------------------- -------- ----
CODCAMPUS NOT NULL VARCHAR2(2)
CODBLOCO NOT NULL VARCHAR2(1)
CODPAVIMENTO NOT NULL NUMBER(5)
CODSALA NOT NULL VARCHAR2(5)
CODTURMA NOT NULL VARCHAR2(7)
HORAINICIO NOT NULL VARCHAR2(5)
HORAFIM NOT NULL VARCHAR2(5)
DIASEMANA NOT NULL VARCHAR2(10)
Eu faço realizo o CRUD tranquilamente no banco com essa configuração, isso se eu colocar um numero INTEIRO no codigo da sala ao cadastrar sala. Se eu colocar um alfanumerico, ele cadastra tbm. MAs se eu fizer uma pesquisa no banco ele me dá o seguinte erro:
08/12/2008 16:33:09 org.hibernate.type.NullableType nullSafeGet
INFO: could not read column value from result set: codsala; Falha ao converter para representação interna
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2147)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2028)
at org.hibernate.loader.Loader.list(Loader.java:2023)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:150)
at br.unig.scif.dao.AlocaDao.listaAlocacoes(AlocaDao.java:46)
at br.unig.scif.bean.AlocaBean.imprimeAlocacoes(AlocaBean.java:327)
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.apache.el.parser.AstValue.invoke(AstValue.java:152)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: Falha ao converter para representação interna
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:156)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:219)
at oracle.jdbc.driver.OracleStatement.getLongValue(OracleStatement.java:3022)
at oracle.jdbc.driver.OracleStatement.getIntValue(OracleStatement.java:2975)
at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:309)
at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1354)
at com.mchange.v2.c3p0.impl.NewProxyResultSet.getInt(NewProxyResultSet.java:2573)
at org.hibernate.type.IntegerType.get(IntegerType.java:28)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)
at org.hibernate.type.ComponentType.hydrate(ComponentType.java:560)
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:275)
at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:103)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2031)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1371)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1299)
at org.hibernate.loader.Loader.getRow(Loader.java:1197)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:568)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2144)
... 41 more
Alguem pode me ajudar???