Olá,
Estou com um problema no meu codigo , preciso usar Id composto e após algumas pesquisas encontrei modos de implementar e ficou assim minhas classes
@Entity
@Table(name="gav_sub_classe")
@IdClass(Gav_SubClassePK.class)
public class Gav_SubClasse implements Serializable{
private static final long serialVersionUID = -2185038838222198562L;
@Id
@Column(name="id_sub_classe")
private int id;
@Id
@Column(name="ID_CLASSE")
private int idClasse;
@Column(name="dsc_sub_classe")
private String descricao;
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIdClasse() {
return idClasse;
}
public void setIdClasse(int idClasse) {
this.idClasse = idClasse;
}
public boolean equals(Gav_SubClasse sub){
if(this.getClass().equals(sub.getClass())){
return true;
}else return false;
}
public void hascode(){
}
}
@Embeddable
public class Gav_SubClassePK implements Serializable{
private static final long serialVersionUID = -1951001184449482686L;
private int id;
private int idClasse;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIdClasse() {
return idClasse;
}
public void setIdClasse(int idClasse) {
this.idClasse = idClasse;
}
public Gav_SubClassePK(){
}
public boolean equals(Gav_SubClassePK subPK){
if(this.getClass().equals(subPK.getClass())){
return true;
}else return false;
}
public void hascode(){
}
Mas o hibernate joga o erro :
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2216)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at br.com.simova.bob.model.simova.BoletimModel.getBoletinsAberto(BoletimModel.java:325)
at br.com.simova.bob.model.simova.StatusFrotaModel.setStatusApontamento(StatusFrotaModel.java:124)
at br.com.simova.bob.quartz.VerificaStatusApontamento.execute(VerificaStatusApontamento.java:13)
at org.quartz.core.JobRunShell.run(JobRunShell.java:191)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:516)
Caused by: java.sql.SQLException: ORA-00904: "GAV_SUBCLA19_"."IDCLASSE": identificador inválido
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:799)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1038)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1133)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2213)
... 10 more
Meu erro esta no mapeamento !?
Obrigado
Begot