Ajuda com Hibernate

3 respostas
S

Olá amigos do GUJ!!

Estou iniciando em Java e estou com o seguinte problema.

Tenho um questionario abaixo:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>


<html>

<head>

<script type="text/javascript">
var total=0;

function soma(campo){

	if(campo.checked){
		total += eval(campo.value);
	}
    else{
		total -= eval(campo.value);
		document.sistema.total.value = total; 
  }

	
}

</script>

<script type="text/javascript">
function show_confirm() {
	var r=confirm("Deseja terminar o Teste?");
	if(r==true){

		   if(total <=61){
		       alert("O resultado foi Leitor Bicho Preguiça:"+total);		
		    }

			 if(total >=62 && total<=123){
			   alert("O resultado foi Leitor Bicho Tartaruga:"+total);		
			 }
	    	
	           if(total >=124 && total<=185){
		         alert("O resultado foi Leitor Bicho Gato:"+total);		
		       }
	
	              if(total >=186 && total<=247){
				    alert("O resultado foi Leitor Bicho Lebre:"+total);		
				  }
					
	                 if(total >=248 && total<=310){
		               alert("O resultado foi Leitor Bicho Leopardo:"+total);		
		             }
	}

	
}
</script>

<script type="text/javascript">
var maxi=1;
var contador=new Array(0,0);
function validar(check,grupo){
	if(check.checked == true){
		contador[grupo]++;
		if(contador[grupo]>maxi){
			alert("Não pode escolher mais de um resposta!!!");
			check.checked=false;
			contador[grupo]--;
        }
	}else{
		contador[grupo]--;
	}
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<style type="text/css">
* {
	font-family: Verdana;
	font-size: 96%;
}

label {
	width: 10em;
	float: left;
}

label.error {
	float: none;
	color: red;
	padding-left: .5em;
	vertical-align: top;
}

p {
	clear: both;
}

.submit {
	margin-left: 12em;
}

em {
	font-weight: bold;
	padding-right: 1em;
	vertical-align: top;
}

table,th,td {
	border: 1px solid green;
}

th {
	background-color: green;
	color: white;
}
</style>

<title>Avaliação</title>
</head>

<body>

<center>
<h1>QUESTIONÁRIO DE AVALIAÇÃO DO PERFIL DO LEITOR TRADICIONAL</h1>
<p>Bem Vindo,${contato.login}</p>

</center>

<center>
<form action="adiciona" name="sistema">
<table>
	<tr>
		<th>Perguntas</th>
		<th>Sempre</th>
		<th>Às vezes</th>
		<th>Nunca</th>
		
	</tr>

	<tr>
		<td>01- Você gosta de ler?</td>
		<td><input type="checkbox" name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
		<td><input type="checkbox" name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
		<td><input type="checkbox" name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>02- Você lê mais de 1 livro por mês?</td>
		<td><input type="checkbox"  name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>03- Na sua casa existe o hábito da leitura?</td>
		<td><input type="checkbox"  name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>04-Você se considera um bom leitor?</td>
		<td><input type="checkbox"  name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>05-Você admira os bons leitores?</td>
		<td><input type="checkbox"  name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.nunca" value="0" onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>06-Você está disposto a assumir o compromisso de ser um bom leitor?</td>
		<td><input type="checkbox"  name="avaliacao.sempre" value="30" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.asVezes" value="15" onclick="soma(this)"></td>
		<td><input type="checkbox"  name="avaliacao.nunca" value="0" onclick="soma(this)"></td>	</tr>

	<tr>
		<td>07-Você escolhe um ambiente tranquilo e bem iluminado na hora de ler um livro?</td>
		<td><input type="checkbox" name="valor" value="20" 	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10" 	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="0"  	onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>08-Você chega a ler 1 livro por mes?</td>
		<td><input type="checkbox" name="valor" value="20" 	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10" 	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="0"  	onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>09-Você define a priori o motivo de seu interesse na escolha
		de um livro?</td>
		<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>10-Você lê o que diz a crítica literária de um livro antes de iniciar sua leitura?</td>
		<td><input type="checkbox" name="valor" value="10" 	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="0" 	onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>11-Você é cuidadoso com seus olhos?</td>
		<td><input type="checkbox" name="valor" value="10" 	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="0" 	onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>12-Você,antes de começar a leitura de um livro, dá uma folheada nele como um todo?</td>
		<td><input type="checkbox" name="valor" value="10" 	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  	onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="0"  	onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>13-Você gosta de ler deitado na cama, no sofá ou na rede?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10" onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>14-Você tem problema de concentração durante a leitura?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>15-Você sente sono durante a leitura?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>16-Você fica inquieto quando lê?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>17-Você retorna a um ponto anterior da leitura enquanto está lendo?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>18-Você mexe os labios enquanto está lendo?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>19-Ao terminar de ler um livro você tem a sensação que não se lembra do que foi lido?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>20-Você lê mais de um livro ao mesmo tempo?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>21-Você tem dificuldade de memorizar o que leu?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>
	</tr>

	<tr>
		<td>22-Você tem dificuldade de lembrar datas,números e medidas?</td>
		<td><input type="checkbox" name="valor" value="0"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="5"  onclick="soma(this)"></td>
		<td><input type="checkbox" name="valor" value="10"  onclick="soma(this)"></td>

	</tr>

	<tr>
		<td><input type="submit" name="avaliacao.total" onclick="show_confirm()" value="" /></td>
	</tr>

</table>
</form>


</center>

</body>
</html>

Ao clicar no checkbox sempre por exemplo, o memso tem o valor 30, logo depois é adicionado ao banco de dados. Até ae tudo blz.

O problema é como o questionario tem 22 perguntas com tres opções (sempre,asVezes e nunca) e ao marcar por exemplo, dois checkboxs sempre o banco de dados retorna valor 0 corespondente a coluna sempre e tb no total.

A minha classe abaixo mostra como esta o Hibernate:

package br.com.caelum.Sistema.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Avaliacao {

	@Id
	@GeneratedValue
	private Long id;
	private int sempre = 0;
	private int asVezes = 0;
	private int nunca = 0;
	private int total = 0;
	private String leitorBichoPreguica;
	private String leitorBichoTartaruga;

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total += (sempre+asVezes+nunca);
	}

	public void setLeitorBichoPreguica(String leitorBichoPreguica) {
		if (total <= 61) {
			this.leitorBichoPreguica = leitorBichoPreguica;
		}
	}

	public String getLeitorBichoPreguica() {
		return leitorBichoPreguica;
	}

	public void setLeitorBichoTartaruga(String leitorBichoTartaruga) {
		if (total >= 62 && total <= 123) {
			this.leitorBichoTartaruga = leitorBichoTartaruga;
		}

	}

	public String getLeitorBichoTartaruga() {
		return leitorBichoTartaruga;
	}

	public void setSempre(int sempre) {
		
		
		this.sempre = sempre;

	}

	public int getSempre() {
		return sempre;
	}

	public void setAsVezes(int asVezes) {
		this.asVezes = asVezes;
	}

	public int getAsVezes() {
		return asVezes;
	}

	public void setNunca(int nunca) {
		this.nunca = nunca;
	}

	public int getNunca() {
		return nunca;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Long getId() {
		return id;
	}

	
}

Outra coisa quando o valor marcado no checkbox é até 61 por exemplo, não cai na condição que fiz na classe acima. E que deveria
informar o perfil do leitor.

Minha classe de teste funciona blz!!!

package br.com.caelum.Sistema.testes;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import br.com.caelum.Sistema.Dao.AvaliacaoDao;
import br.com.caelum.Sistema.infra.CriadorDeSessionFactory;
import br.com.caelum.Sistema.infra.CriarSession;
import br.com.caelum.Sistema.modelo.Avaliacao;

public class AdicaoDeAvaliacao {

	public static void main(String[] args) {

		SessionFactory factory = new CriadorDeSessionFactory().getInstance();

		Session session = new CriarSession(factory).getInstance();
				
		Avaliacao avaliacao = criaAvaliacao();

		new AvaliacaoDao(session).salva(avaliacao);

	}

	private static Avaliacao criaAvaliacao() {
		Avaliacao avaliacao = new Avaliacao();
		avaliacao.setTotal(120);
		avaliacao.setLeitorBichoPreguica("leitorBichoPreguica");
		avaliacao.setLeitorBichoTartaruga("leitorBichoTartaruga");

		return avaliacao;
	}

}

Por acaso alguem já teve esse problema antes?

abs

Edson

3 Respostas

jeroqueiroz

Cara coloque o código sempre dentro da tag Code pra ficar mais fácil a visualização. A Galera desiste de ler o tópico qdo ver o código misturado com a dúvida.

Z111

Me parece que o seu bean não está recebendo o valor do jsp …

experimente debugar para ver q valor ele está recebendo.

S

Ok camarada. Vou fazer isso.

Criado 17 de julho de 2010
Ultima resposta 20 de jul. de 2010
Respostas 3
Participantes 3