Herança no HibernateUtil

Olá a todos,

Por gentileza,

Tenho uma super classe Pessoa e duas outras classes Aluno e Professor que extendem aquela, pois bem, estou tentando fazer o mapeamento na minha classe HibernateUtil e estou recebendo a seguinte exception:

22/12/2010 22:38:19 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet action threw exception
java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings has interface org.hibernate.cfg.Mappings as super class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2733)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1124)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
        at org.hibernate.cfg.AnnotationConfiguration.createExtendedMappings(AnnotationConfiguration.java:182)
        at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:272)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
        at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
        at com.myapp.struts.dao.HibernateUtil.<clinit>(HibernateUtil.java:45)
        at com.myapp.struts.dao.AlunoDAO.<init>(AlunoDAO.java:20)
        at com.myapp.struts.action.AdicionaAlunoAction.execute(AdicionaAlunoAction.java:31)
        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        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:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        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:298)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
        at java.lang.Thread.run(Thread.java:619)

HibernateUtil:


package com.myapp.struts.dao;

import com.myapp.struts.modelo.Aluno;
import com.myapp.struts.modelo.Curso;
import com.myapp.struts.modelo.Disciplina;
import com.myapp.struts.modelo.Endereco;
import com.myapp.struts.modelo.Pessoa;
import com.myapp.struts.modelo.Professor;
import com.myapp.struts.modelo.Turma;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 *
 * @author HOUSE
 */


public class HibernateUtil {

    private static SessionFactory factory;
    Pessoa pessoa;
    Aluno aluno;
    Professor professor;
    Endereco endereco;
    Turma turma;
    Disciplina disciplina;
    Curso curso;

    static {
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        cfg.addAnnotatedClass(Aluno.class);
        cfg.addAnnotatedClass(Pessoa.class);
        cfg.addAnnotatedClass(Professor.class);
       // cfg.addAnnotatedClass(Endereco.class);
       // cfg.addAnnotatedClass(Turma.class);
       // cfg.addAnnotatedClass(Disciplina.class);
       // cfg.addAnnotatedClass(Curso.class);
        factory = cfg.buildSessionFactory();
    }

    public Session getSession() {
        return factory.openSession();
    }
}

Pessoa:

package com.myapp.struts.modelo;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;


/**
 *
 * @author HOUSE
 */

@MappedSuperclass
public class Pessoa implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name="id_pessoa")
    private int pessoa_id;
    private String nome;
    private String email;
    private String telefone;
  //  @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="Pessoa")
  //  private Endereco endereco;

  //  public void setEndereco(Endereco endereco) {
   //     this.endereco = endereco;
   // }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public void setPessoa_id(int pessoa_id) {
        this.pessoa_id = pessoa_id;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getPessoa_id() {
        return pessoa_id;
    }

    public String getEmail() {
        return email;
    }

    public String getNome() {
        return nome;
    }

 //   public Endereco getEndereco() {
  //      return endereco;
   // }

    public String getTelefone() {
        return telefone;
    }
}

Aluno:

package com.myapp.struts.modelo;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.PersistenceContext;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;


/**
 *
 * @author HOUSE
 */
@Entity
@Table(name="aluno", schema="anotacoes")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Aluno extends Pessoa { 

    @PersistenceContext
    @Column(name ="matricula")
    private String matricula;
    private String nota;


    public void setNota(String nota) {
        this.nota = nota;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getMatricula() {
        return matricula;
    }

    public String getNota() {
        return nota;
    }

  
}

Professor:

package com.myapp.struts.modelo;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

/**
 *
 * @author HOUSE
 */
@Entity
@Table(name="professor", schema="anotacoes")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Professor extends Pessoa {

    @Id
    private int professor_id;
    private String titulo;

    public void setProfessor_id(int professor_id) {
        this.professor_id = professor_id;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getTitulo() {
        return titulo;
    }

    public int getProfessor_id() {
        return professor_id;
    }
}

O hibernate está funcionando perfeitamente para outras finalidades, a questão é que não estou conseguindo fazer Aluno e Professor herdar Pessoa.

Algúem poderia ajudar?

Desde já agradeço.

[]'s

Deixa apenas a annotation @Entity nas classes Professor e Aluno

Tira: @Table(name=“aluno”, schema=“anotacoes”)
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

Acho que irá funcionar.

Olá Rafael,

Obrigado pela atenção.

Fiz as alterações que você pediu mas o erro persiste.

Estou enviando em anexo os jars do hibernate que estou utilizando.

[]'s

Mais algúem?

Da maneira como falei irá criar duas tabelas: uma para o aluno outra para o professor e os atributos da pessoa irão para as duas tabelas.

Deve estar ocorrendo erro, pois na classe pessoa você tem um @Id e na classe professor também. Você não pode ter dois @Id para a mesma tabela. Por isso, deve estar ocorrendo erro. Retire o @Id da classe Professor ou então retire da classe Pessoa e coloque um @Id para a classe Aluno.

Outra coisa, você só colocou o @Id na classe Professor (não no aluno), por que? Lembre-se que o Hibernate exige um @Id por entidade. Se não ocorre erro.

Testa ai. Se ocorrer erro, manda o statcktrace senão fica complicado adivinhar :smiley:

Olá Rafael,

Mais uma vez obrigado, estou no serviço agora, quando eu chegar em casa, testo.

[]'s

Olá Rafael,

1º - Deletei a table Pessoa
2º - Deixei o @Id somente em Pessoa
3º - Tentei na minha classe HibernateUtil mapear Pessoa, Aluno, Professor. Depois só Pessoa.

O erro persiste.

Não reenviei a stacktrace por que continua a mesma da primeira mensagem.

[]'s

Por que deletou a table Pessoa??

Eu acho que irá funcionar assim: (não compilei para testar)

[code]@MappedSuperclass
public class Pessoa implements Serializable {

private String nome;  
private String email;  
private String telefone;  

}

@Entity
public class Aluno extends Pessoa {

@Id  
@GeneratedValue
private int id;   
private String matricula;  
private String nota;  

}

@Entity
public class Professor extends Pessoa {

@Id  
@GeneratedValue
private int professor_id;  
private String titulo;  

}[/code]

Obrigado pela dedicação!

package com.myapp.struts.dao;

import com.myapp.struts.modelo.Aluno;
import com.myapp.struts.modelo.Curso;
import com.myapp.struts.modelo.Disciplina;
import com.myapp.struts.modelo.Endereco;
import com.myapp.struts.modelo.Pessoa;
import com.myapp.struts.modelo.Professor;
import com.myapp.struts.modelo.Turma;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 *
 * @author HOUSE
 */


public class HibernateUtil {

    private static SessionFactory factory;
    Pessoa pessoa;
    Aluno aluno;
    Professor professor;
    Endereco endereco;
    Turma turma;
    Disciplina disciplina;
    Curso curso;

    static {
        AnnotationConfiguration cfg = new AnnotationConfiguration();
        //cfg.addAnnotatedClass(Pessoa.class);
        cfg.addAnnotatedClass(Aluno.class);
        cfg.addAnnotatedClass(Professor.class);

     //   cfg.addAnnotatedClass(Endereco.class);
     //   cfg.addAnnotatedClass(Turma.class);
    //    cfg.addAnnotatedClass(Disciplina.class);
     //   cfg.addAnnotatedClass(Curso.class);
        factory = cfg.buildSessionFactory();
    }

    public Session getSession() {
        return factory.openSession();
    }
}

Será que não sabendo usar a classe acima? A exception é a mesma:

Verifiquei em umas entidades que utilizo o @MappedSuperClass

Realmente a classe Pessoa não vai declarada no HibernateUtil.

...
AnnotationConfiguration cfg = new AnnotationConfiguration();  
//cfg.addAnnotatedClass(Pessoa.class);  
cfg.addAnnotatedClass(Aluno.class);  
cfg.addAnnotatedClass(Professor.class); 
...

O restante aparentemente está correto. Não declarando a pessoa no HibernateUtil o stacktrace continua o mesmo?

Vamos ganhar um bom dinheiro para as festas de fim de ano e ano novo!!!
Método Aprovado pela REVISTA EXAME!!!

GANHE DINHEIRO FÁCIL, RÁPIDO E HONESTAMENTE!!! VOCÊ JÁ IMAGINOU GANHAR R$ 25.000,00 EM MENOS DE 4 SEMANAS?? ACHA IMPOSSÍVEL?? ENTÃO LEIA ESTE ARTIGO E COMEMORE!!!

Oi! Eu tenho ótimas notícias que devem demorar uns três minutos para ler. Você alguma vez pensou “Como eu posso faturar alto em pouco tempo???”, ou esteve devendo muita grana, pronto a realizar qualquer coisa para conseguir pagar suas contas? Então, leia este texto realmente interessante, um verdadeiro achado . Eu estava lendo umas mensagens na rede quando eu vi um artigo que começava dizendo CONSIGA GRANA FÁCIL!! Eu pensei… “Aqui na Internet?? Que tipo de esquema de grana fácil poderia haver na Internet? Eu tenho que ver”. O artigo descrevia um modo que dizia MANDE DOIS REAIS PARA APENAS SEIS PESSOAS E FAÇA R$ 25.000 EM DINHEIRO VIVO EM APENAS 4 SEMANAS! Bem, quanto mais eu pensava nisso, mais eu ficava curiosa. Por quê? Por causa do modo de funcionamento desse sistema e porque SÓ IRIA ME CUSTAR DOZE REAIS E ISSO SERIA TUDO A PAGAR… PRA SEMPRE!!! Tudo bem, os R$ 25.000 em grana poderiam ser uma grana dificílima de alcançar, mas eram possíveis. Pode parecer mais uma daquelas falsas notícias que você vê por aí, mas, por favor, LEIA ESTE TEXTO COM ATENÇÃO para entender é muito fácil, simples e o melhor… Funciona!!! REALMENTE VALE A PENA!!! COMPROVADO PELA REVISTA EXAME… ISTO PODE MUDAR SUA VIDA!!! Você deve seguir as instruções e mandar este artigo para todos os lugares que você puder e imaginar! O quanto você mandar vai determinar a quantidade de dinheiro que VOCÊ irá GANHAR!! É simplesmente muito fácil de se realizar!!! Vamos revisar agora os motivos que você tem para fazer isso: O custo é de somente 12 reais que você deposita para as pessoas da lista. Então simplesmente mande este arquivo (COM O SEU NOME ADICIONADO A ELE) para tudo quanto e Rede de mensagens e BBS que conheça e possa. Todos nós temos R$ 12,00 para colocar em tal investimento com RETORNO REALÍSTICO DE $ 15.000 A $ 25.000 entre 3 a 5 semanas! Então deixe a loteria um pouco de lado e utilize este valor aqui, neste espantoso sistema de fazer dinheiro!!! Não tem como perder!!! Você então pergunta: “Como fazer isso exatamente, sem dar problemas?” E eu te respondo: Eu cuidadosamente escrevi da forma mais detalhada, as instruções mais fáceis possíveis de entender de como encaminhar a grana para você. ENTÃO, VOCÊ ESTÁ PRONTO PARA GANHAR DINHEIRO? ENTAO AÍ VAMOS NÓS!!! *** A LISTA DE NOMES ESTA NO FINAL DESTE ARTIGO. *** Ok, leia tudo isso cuidadosamente. Imprima estas informações, se quiser, para que você possa facilmente utilizada como referência quando precisar. Siga as instruções e veja o dinheiro entrar! É fácil, é legal e seu investimento é de 12,00. IMPORTANTE: Isto não é um golpe, não é indecente, não é ilegal, funciona muito nos países de 1º mundo e foi avaliado positivamente pela revista Exame. Funciona mesmo!! Se todas as instruções seguintes forem cumpridas, seu retorno será bem rápido. Este programa continua próspero por causa da HONESTIDADE E INTEGRIDADE dos participantes. POR FAVOR, continue fazendo com que o programa seja um sucesso seguindo cuidadosamente as instruções: ETAPA 1: Imediatamente, mande R$2,00 (dois reais) para cada uma das seis pessoas que estão relacionadas na listagem abaixo. Deposite esta quantia na conta-corrente ou poupança delas e não se aborreça caso tenha que ir a várias agências bancárias. Há uma lei divina que exige algum sacrifício para se obter o que deseja. ETAPA 2: Quando depositar os R$ 2,00 na conta das seis pessoas da lista, mande um e-mail para cada uma delas dizendo: “O numero do comprovante bancário é ________. Solicito que inclua o meu nome/e-mail na sua lista de correspondências”. Isto torna legalizada a operação bancária e fica de acordo com a legislação vigente, que diz que todo dinheiro deve ser trocado por um bem ou serviço. Este é o serviço. ETAPA 3: Após ter depositado o dinheiro para cada uma das seis pessoas digite uma nova lista. Em seguida tire o nome que está no número 1 e mude os nomes restantes para uma posição acima (o segundo nome passa a ser o número 1, o terceiro para numero 2 e assim por diante, até que o seu nome passe a ser o número 6). Em nenhuma hipótese mude a sequência de nomes. Seu nome deve estar na posição 6. ETAPA 4: INSTRUÇÕES PARA COMO POSTAR NOS FÓRUNS E NEWSGROUPS. Você não precisa digitar novamente esta carta inteira para fazer sua própria mensagem simplesmente selecione todo o texto e copie para o bloco de notas ou wordpad, se preferir. Agora altere o texto nas partes que você já aprendeu. Salve o arquivo como, por exemplo, (MONEY.TXT). Use o Netscape, Internet Explorer ou algum outro navegador e procure vários newsgroups (fóruns on-line, cadernos de mensagens, locais de conversa, discussões, etc.). Entre nesses newsgroups e poste uma nova mensagem em cada MURAL ou ÁREA do fórum ou do newgroup, selecione o texto já alterado no arquivo MONEY.TXT e copie para dentro da área de texto de mensagem no fórum (botão direito-COLAR). O seu texto aparecerá na nova mensagem que você está editando. Agora ponha o título da mensagem, algo relacionado a ganhar dinheiro com a internet. Clique em enviar mensagem, e pronto, você acabou de enviar sua primeira mensagem!!! PARABÉNS. Tudo que você tem que fazer é ir a outros MURAIS (temas, áreas, etc.) e fazer de novo, no máximo possível e no mínimo 200 postagens. LEMBREM-SE, QUANTO MAIS MENSAGENS VOCÊ POSTAR AOS NEWSGROUPS OU LUGARES DIFERENTES, MAIS DINHEIRO VOCÊ GANHARÁ! MAS VOCÊ TEM QUE POSTAR UM MÍNIMO DE 200. DICA: procure sites famosos (CADÊ, TERRA, BRTURBO, PROGRAMAÇÃO, UOL, BOL E ETC) que tenham fóruns e poste lá também, pois são os mais visitados e lembrem-se, as suas postagens em fóruns são mais vistas no mesmo dia por milhares de pessoas, o que quer dizer que você pode postar várias vezes em um mesmo fórum em dias diferentes. Pronto! Você logo começará a receber dinheiro . Agora ou Como tudo acontecerá para que você receba muito dinheiro: pessimistamente vamos dizer que das 200 mensagens que eu enviei, eu receba só 5 respostas (um exemplo muito baixo). Então receberei R$5,00 com meu nome na posição #6#. Agora, cada uma das 5 pessoas que há pouco me enviaram R$2,00, enviem mais, no mínimo, 200 mensagens para outros lugares diferentes cada uma, com o meu nome agora na posição #5# e só 5 pessoas respondam a cada uma dessas 5 pessoas (30 pessoas honestamente participarem de um total de 1200 mensagens para vária pessoas, um exemplo muito baixo mesmo)Isso é mais R$25,00 para mim.Agora esses 25 fazem 200 posts MÍNIMOS com meu nome na posição #4# e só respondem para cada um dos 25 que enviarem,eu receberei então mais de R$125,00.Agora, essas 125 pessoas postam no mínimo 200 com meu nome na #3# e só 5 respondem cada,eu ganharei R$626,00!Ok,agora aqui é parte divertida,cada dessas 625 pessoas postam para um MÍNIMO 200 newsgroups diferentes com meu nome na posição #2# e cada um só recebe 5 retornos.Isso me rende mais R$3,125,00!!! Essas 3,125 pessoas também vão mandar mensagens a 200 newsgroups diferentes com meu nome na posição #1# e se ainda 5 pessoas dos 200 newsgroups de cada reagem, eu receberei R$15,625,00! Com um investimento original de só R$12,00! INCRÍVEL Quando seu nome sai da lista você só precisa enviar mais R$12,00 e colocar seu nome na posição de nova mensagem e postar mais 200 mensagens novamente. Você deve lembrar que milhares de pessoas estão entrando na internet no Brasil e no mundo inteiro e estão lendo estes artigos todos os dias, assim como você agora!!! Você deveria pegar R$12,00 e tentar para ver se funciona certo? O QUE SÃO R$12,00 HOJE QUANDO HÁ MAIS CHANCES DE REALMENTE FUNCIONAR. Quais as chances disso acontecer quando milhões de pessoas se juntam na internet todos os dias e vão para os chats e newsgroups! Lembre-se, seja HONESTO e isto realmente funcionará. Ainda continuo fazendo esse trabalho que é legal, simples e rentável, não tem burocracia nenhuma, e só é necessário ter um computador com internet disponível e boa vontade de ficar navegando espalhando mensagens por milhares de fóruns. DICA ÚTIL: Caso tenha uma crise de poucos fóruns experimente entrar no http://www.google.com.br/ ou www cade.com e digitar algo como FÓRUM, FORUNS, NOVA MENSAGEM, ASSUNTO, POSTAR, BLOG, FOTOLOG, CHATS… ETC Clique em pesquisar para cada palavra que testar e você ficarão surpreso, pois cerca de 20 a 30 mil sites aparecerão com fóruns para você escolher. Entre em cada um deles (com o botão direito do mouse+abrir nova janela). Alguns requerem cadastro. Faça-o, pois a maioria deles é grátis, guarde o login e senha para futuras novas postagens. Agora PAGUE AQUELAS CONTAS ATRASADAS E SUAS DIVÍDAS, compre algo que você sempre sonhou!!!
Depoimento: “Ora, é só uma brincadeira: eu dou 2 reais para 6 pessoas e mando uns 100 E-mails só para ver no que vai dar” pensei comigo quando resolvi entrar. Foi a brincadeira mais lucrativa que eu participei (tomei um banho de Shopping com o dinheiro que ganhei). Ana Paula Resende - Volta Redonda - Rio de Janeiro “Bem eu já conhecia este programa por cartas, o investimento era maior (torno de 200,00 R$, cartas envelopes e xerox), mesmo assim mandei, tive um retorno modesto, torno de 2000,00 R$, esse de E-mail, lógico que vou tentar.” Anderson - Anápolis - Goiás

LISTA DOS NOMES***

01- Cibeli Castro de Freitas- BANCO Do BRASIL AGÊNCIA 0045-0 Poupança 31.830-2, variação 01, cibelifreitas@hotmail.com

02- Mirian F. Draghi - Banco do Brasil, Ag. 0427-8 Poupança 141517-4 Variação 01, mdraghi40@hotmail.com

03- Isa Mônica P. Barbosa - Caixa Econômica Federal - ag. 0177 conta poupança 00218752-9 - operação 013, wurtzita@ig.com.b
04- Josiane Priscila Viana dos Santos ? CAIXA ECONÔMICA FEDERAL ? POUPANÇA ? AG. 1504 OP. 013 ? CONTA 01795830-4
josiane-viana@hotmail.com
05- Lilian B. Piccinini? Banco do Brasil ? AG.6538-2 CC 24.650-6 lipne@zipmail.com.br
06- Hans Leonnard O. Linhares- Banco Bradesco, AG. 0151-1 CC 0539352-3
"MUITO OBRIGADO POR LER ESTE TEXTO E ESPERO QUE PARTICIPE"
OBS: Ver Parecer Jurídico
Art. 2º, IX da Lei nº 1.521/51.

  1. CRIME CONTRA A ECONOMIA POPULAR -“Pirâmide da fortuna” - Necessidade da ciência da fraude do jogo - Inconfiguração - Inteligência: art. 2º, IX da Lei nº 1.521/51 109 - O simples envolvimento dos acusados com a chamada “pirâmide da fortuna” não se mostra apto à caracterização do crime contra a economia popular capitulado no art. 2º, IX da Lei nº 1.521/51, sendo necessário que os agentes tenham ciência da fraude do jogo, pois, para que alguém seja apenado por crimes contra a economia popular é preciso que o ato lhe possa ser imputado por dolo ou culpa e não somente por conexão física entre a ação ou omissão e o resultado.
    (Recurso de Ofício nº 627.241/1, Julgado em 17/10/1. 990, 6ª Câmara, Relator: - Rubens Gonçalves, RJDTACRIM 9/215 no site: http://www.tacrim.sp.gov.br/jurisprudencia...l/volume9.html) Aconselho que todos visitem esse site e confiram. É necessário, como diz acima, que haja “fraude no jogo”, para haver crime. Se todo o esclarecimento de probabilidades está claro, como em seu e-mail, não há fraude, portanto, não há crime.
  2. Vejamos se poderia ser estelionato.
    Diz o Código Penal, Art. 171:
    “Obter, para si ou para outrem, vantagem ilícita, em prejuízo alheio, induzindo ou mantendo alguém em erro, mediante artifício, ardil, ou qualquer outro meio fraudulento” - Não há muito que se dizer aqui. Onde está o ‘meio fraudulento’ de seu e-mail? Não o vejo, pois tudo está explicado claramente. Onde está a ilicitude da vantagem? (visto que é uma cooperação acumulativa) Não a vejo. Onde está o prejuízo alheio? Não há, pois foi explicado que quem enviar poucos e-mails não terá retorno, e só poderá culpar a seu próprio desleixo. Nenhum dos elementos normativos, objetivos ou subjetivos do estelionato se enquadra em seu e-mail. Logo, não é estelionato.
  3. Vejamos se seria “enriquecimento sem causa”.
  • Todo ganho tem de ter uma causa, se não, a lei veda. No entanto, existe o instituto da “doação”, que permite que cada um doe os R$ 12,00 de sua livre vontade, sem ser coagido a nada. Seria uma “taxa” para participar do programa de cooperação. Eis a causa. Também, para que uma pessoa ganhe muito dinheiro, os demais também estarão ganhando, já que os depósitos de 12 reais são feitos.

Bom dia Rafael,

Desculpe por ontem, cara, acabei capotando. :frowning:

Sim, não declarando a classe Pessoa no HibernateUtil a stacktrace continua a mesma.

Só para passar o exemplo completo, estou utilizando Struts 1, segue as classes e JSP:

aluno.jsp:

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="caelum" %>

<html:html>
  <center><html:form action="/novoAluno" focus="aluno.matricula">
        Nome:
        <html:text property="aluno.matricula"/>
        <br/>
        Email:
        &lt;html:text property="aluno.matricula"/&gt;
        <br/>
        Telefone:
        &lt;html:text property="aluno.matricula"/&gt;
        <br/>
        Matricula:
        &lt;html:text property="aluno.matricula"/&gt;
        <br/>
        Nota:
        &lt;html:text property="aluno.nota"/&gt;
        <br/>
        &lt;html:submit&gt;Enviar dados&lt;/html:submit&gt;
        <br/>
    &lt;/html:form&gt;
&lt;/html:html&gt;&lt;/center&gt;

CadastraAlunoForm.java:

public class CadastraAlunoForm extends ActionForm{
    

  //  private Pessoa pessoa = new Pessoa();
    private Aluno aluno = new Aluno();


    public Aluno getAluno() {
        return aluno;
    }
    
}

CadastraProfessorForm.java:


package com.myapp.struts.form;

import com.myapp.struts.action.*;
import com.myapp.struts.modelo.Professor;
import org.apache.struts.action.ActionForm;

/**
 *
 * @author HOUSE
 */
public class CadastraProfessorForm extends ActionForm{

    private Professor professor = new Professor();

    public Professor getProfessor() {
        return professor;
    }

}

OBS: Acredito que Aluno e Professor poderia estar no mesmo Form, mas são outros quinhentos.

CadastraAlunoAction.java:

package com.myapp.struts.action;

import com.myapp.struts.dao.AlunoDAO;
import com.myapp.struts.dao.PessoaDAO;
import com.myapp.struts.dao.ProfessorDAO;
import com.myapp.struts.form.CadastraAlunoForm;
import com.myapp.struts.form.CadastraProfessorForm;
import com.myapp.struts.modelo.Aluno;
import com.myapp.struts.modelo.Pessoa;
import com.myapp.struts.modelo.Professor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author HOUSE
 */
public class AdicionaAlunoAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        AlunoDAO alunoDao = new AlunoDAO();
        ProfessorDAO professorDao = new ProfessorDAO();
        PessoaDAO pessoaDao = new PessoaDAO();

        CadastraAlunoForm formulario = (CadastraAlunoForm) form;
        CadastraProfessorForm formu = (CadastraProfessorForm) form;

        Aluno aluno = formulario.getAluno();
        Professor professor = formu.getProfessor();
        alunoDao.adiciona(aluno);
        professorDao.adiciona(professor);
        



        return mapping.findForward("ok");




    }
}

AlunoDAO.java:

package com.myapp.struts.dao;

import com.myapp.struts.modelo.Aluno;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author HOUSE
 */
public class AlunoDAO {

    private Session session;

    public AlunoDAO() {
        this.session = new HibernateUtil().getSession();
    }

    public void adiciona(Aluno aluno) {
        Transaction tx = session.beginTransaction();
        session.save(aluno);
        tx.commit();
    }
}

ProfessorDAO.java

package com.myapp.struts.dao;

import com.myapp.struts.modelo.Professor;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author HOUSE
 */

public class ProfessorDAO {

    private Session session;

    public ProfessorDAO() {
        this.session = new HibernateUtil().getSession();
    }

    public void adiciona(Professor professor) {
        Transaction tx = session.beginTransaction();
        session.save(professor);
        tx.commit();
    }
}

Obrigado mais uma vez! :smiley:

[]'s