Dúvida com composite-id do hibernate

Ola!
Eu estou começando com hibernate e gostaria de saber se em uma classe todos os atributos são ID as classes ficariam assim:

tabela do banco:

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)
@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="codsala",insertable=false,updatable=false),       
		    @JoinColumn(name="codcampus",insertable=false,updatable=false),       
		    @JoinColumn(name="codbloco",insertable=false,updatable=false),       
		    @JoinColumn(name="codpavimento",insertable=false,updatable=false),       
	})
	private Sala sala;
	@ManyToOne(fetch=FetchType.LAZY)
		@JoinColumn(name="codturma",insertable=false,updatable=false)
	private Turma turma;
//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

Eu estou postando esta dúvida pois eu to tentando fazer uma busca pelo id nesta classe e dá me dando este erro:

org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [br.unig.scif.modelo.Aloca#br.unig.scif.modelo.AlocaPK@191a41d]
at org.hibernate.impl.SessionFactoryImpl$1.handleEntityNotFound(SessionFactoryImpl.java:375)
	at org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:79)
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:68)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:172)
	at br.unig.scif.modelo.Aloca$$EnhancerByCGLIB$$f3de347a.getId(<generated>)
	at br.unig.scif.bean.AlocaBean.unirTurmasAction(AlocaBean.java:297)
	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)

O metodo da busca:

public String unirTurmasAction(){
		String retorno = "sucesso";
		Session session = null;
		try{
			session = HibernateUtil.getSession();
			//deletar as alocações das turmas envolvidas no horario
			for (Matriculado matriculado:listaTurmasUnidas){
				session = HibernateUtil.getSession();
				session.beginTransaction();
				
				AlocaPK id = new AlocaPK();
				id.setCodBloco(codbloco);
				id.setCodCampus(codcampus);
				id.setCodPavimento(codpavimento);
				id.setCodSala(codsala);
				id.setCodTurma(matriculado.getId().getCodTurma());
				id.setDiaSemana(diasemana);
				id.setHoraFim(horafim);
				id.setHoraInicio(horainicio);
				//A busca que dá erro
				Aloca aloca = new Dao<Aloca>(session,Aloca.class).procura(id);
				System.out.println(aloca.getId().getDiaSemana());//Ele imediatamente dá erro nesta linha			
				new Dao<Aloca>(session,Aloca.class).remove(aloca);
				session.flush();
				session.getTransaction().commit();
                                                                //Salvar as novas alocações
				session.beginTransaction();
				new Dao<Aloca>(session,Aloca.class).atualiza(aloca);
				session.getTransaction().commit();				}
		}catch (Exception e) {
			System.out.println("Não foi possivel fazer a uniao de turmas na sala");
			retorno = "falha";
			e.printStackTrace();
		}finally{
			session.close();
		}
		return retorno;
	}

o metodo do Dao:

public T procura(Serializable id) {     
	       return (T) session.load(this.classe, id);     
	}    

Se alguém puder me ajudar…
Obs: Quem já viu eu postando já deve ter percebido que to nesse projeto um tempão e não consigo acabar, pois estou começando com hibernate e tá uma luta… :oops: