Olá, tem uma tabela no banco onde temu uma chave primaria composta, e eu precisso pegar dados dessa tabela mais eu não consigo fazer o hibernate pegar estes dados da tabela.
A pergunta é como fica o meu Teste.hbm.xml???
Lah vai o codigo sql da tabela
CREATE TABLE testecomposto (
ide VARCHAR2(15) NOT NULL,
idi NUMBER(10,0) NOT NULL
)
PCTUSED 0
/
ALTER TABLE testecomposto
ADD CONSTRAINT xpk_testecomposto PRIMARY KEY (
ide,
idi
)
/
Codigo da meu Modelo
public class TesteCompostoMd {
/** Creates a new instance of MovimentoMd */
public TesteCompostoMd() {
}
private String ide;
private Integer idi;
public String getIde() {
return ide;
}
public void setIde(String ide) {
this.ide = ide;
}
public Integer getIdi() {
return idi;
}
public void setIdi(Integer idi) {
this.idi = idi;
}
}
Este eh meu controle
public class TesteCompostoCtr {
private static TesteCompostoMd objCliente;
private Session db = GerenciadorHibernate.currentSession();
/**
* @param args the command line arguments
*/
public TesteCompostoCtr() {
setObjCliente(new TesteCompostoMd());
}
/**
* Método que retorna a lista de objetos ClienteMd contido em Db.
* @return ArrayList<ClienteMd>
*/
public ArrayList<TesteCompostoMd> getLista(){
return new ArrayList<TesteCompostoMd>(db.createCriteria(TesteCompostoMd.class).list());
}
public void teste(){
Iterator<TesteCompostoMd> iter = getLista().iterator();
while (iter.hasNext()){
objCliente = iter.next();
System.out.println(objCliente.getIde());
}
}
public TesteCompostoMd getObjCliente() {
return objCliente;
}
public void setObjCliente(TesteCompostoMd objCliente) {
this.objCliente = objCliente;
}
}
[b]
como fica o meu mapeamento do hiberntae???
Socorro???[/b]
valew pela ajuda quem me ajudar !!!
Tente assim:
<hibernate-mapping>
<class name="TesteCompostoMd" table="testecomposto">
<composite-id>
<key-property name="ide"/>
<key-property name="idi"/>
</composite-id>
</class>
</hibernate-mapping>
nunca usei chave composta no hibernate… sempre preferi ids sequenciais…
mas em todo caso, acho q fica ± assim:
<composite-id>
<key-property name=“ide”/>
<key-property name=“idi”/>
</composite-id>
de uma boa olhada em:
http://www.hibernate.org/hib_docs/v3/reference/en/html/mapping.html#mapping-declaration-compositeid
Não funciono!!!
<hibernate-mapping>
<class name="TesteCompostoMd" table="testecomposto">
<composite-id>
<key-property name="ide"/>
<key-property name="idi"/>
</composite-id>
</class>
</hibernate-mapping>
Deu o seguinte erro:
Exception in thread “main” java.lang.NullPointerException
at testecomposto.Main.main(Main.java:32)
Java Result: 1
anteriormente falto eu colocar o codigo do meu main:
public class Main {
private static TesteCompostoCtr objMov;
public Main() {
setObjMov(new TesteCompostoCtr());
}
public static void main(String[] args) {
getObjMov().teste();
}
public static TesteCompostoCtr getObjMov() {
return objMov;
}
public static void setObjMov(TesteCompostoCtr aObjMov) {
objMov = aObjMov;
}
}
Você não atribuiu nenhum valor para o atributo objMov, então ele é nulo, e lançará exceção quando você tentar chamar o metodo teste();
obs.: Me parece que você tentou inicializar ele no construtor, mas note que você não está instanciando essa classe Main, então o construtor Main() não está sendo chamado…
Obrigado resovel aquele problema agora estou com outro erro:
[b]
Exception in thread “main” java.lang.NoClassDefFoundError: org/dom4j/DocumentException
at br.localfrio.side.persistencia.hibernate.GerenciadorHibernate.<clinit>(GerenciadorHibernate.java:14)
at movimento.TesteCompostoCtr.<init>(TesteCompostoCtr.java:26)
at testecomposto.Main.main(Main.java:30)
Java Result: 1
[/b]
Na verdade esse era o meu erro real, por que estou fazendo uma aplicação web e nesta aplicação não tenho main…
Adaptei para fazer este teste para ficar mais facil de explicar o meu problema… e erro q sempre tive problema é o seguinte:
Exception in thread “main” java.lang.NoClassDefFoundError: org/dom4j/DocumentException
at br.localfrio.side.persistencia.hibernate.GerenciadorHibernate.<clinit>(GerenciadorHibernate.java:14)
at movimento.TesteCompostoCtr.<init>(TesteCompostoCtr.java:26)
at testecomposto.Main.main(Main.java:30)
Java Result: 1
MUITO OBRIGADO PARA VOCES QUE ESTAO ME AJUDANDO!!!
Está faltando essa classe aí no seu classpath, você copiou todos os jar’s da pasta lib do Hibernate?
Lá tem um jar que se chama dom4j(versão).jar, pegue ele e coloque no seu classpath (lib do Tomcat se for web), lá na pasta lib do Hibernate tambem vem um arquivo README.txt que informa quais jar’s são requeridos e quais são opcionais, leia ele tambem pra saber o que você pode deixar de lado.
Po jurava que tinha colocado esse jar. !!! Mais realmente não coloquei muito obrigado.
Vou colocar e se eu tiver com algum problema novamente irei escrever aqui, nao se esqueça de dah uma olhadinha mais tarde valew…
Brigadão mesmo… muito grato
Este é meu novo erro:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
%%%% Error Creating SessionFactory %%%%
org.hibernate.MappingException: composite-id class must implement Serializable: movimento.TesteCompostoMd
at org.hibernate.mapping.RootClass.checkCompositeIdentifier(RootClass.java:220)
at org.hibernate.mapping.RootClass.validate(RootClass.java:201)
at org.hibernate.cfg.Configuration.validate(Configuration.java:984)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1169)
at br.localfrio.side.persistencia.hibernate.GerenciadorHibernate.currentSession(GerenciadorHibernate.java:25)
at movimento.TesteCompostoCtr.<init>(TesteCompostoCtr.java:26)
at testecomposto.Main.main(Main.java:30)
Exception in thread “main” java.lang.NullPointerException
at br.localfrio.side.persistencia.hibernate.GerenciadorHibernate.currentSession(GerenciadorHibernate.java:31)
at movimento.TesteCompostoCtr.<init>(TesteCompostoCtr.java:26)
at testecomposto.Main.main(Main.java:30)
Java Result: 1
Sua classe TesteCompostoMd deve ser serializavel, faça ela implementar a interface java.io.Serializable.
ex.:
[code]public class TesteCompostoMd implements Serializable{
}[/code]
Meu muito obrigado!!! Não sei nem como agradecer tava me matando a tempos em efazer isso e agora até quem fim consegui… graça a sua ajuda muito obrigado mesmo…
:lol:
:eek: 
BrigadooooooooooooooooooOOOOOOOOOOOOOOOOO…
Abração ateh mais!!!