É galera, nao to conseguindo… to me batendo numa coisa besta.
Vou postar todo o codigo pra vcs verem
(Usuario)
@Entity
public class Usuario
{
@Id
@GeneratedValue
@Column(name="id")
private long id;
@Column(name="email", length=50, unique=true, nullable=false)
private String email;
@Column(name="senha", length=20, nullable=false)
private String senha;
@OneToOne(mappedBy="usuario")
@Cascade(CascadeType.ALL)
private Perfil perfil = new Perfil();
@Temporal(TemporalType.TIMESTAMP)
@Column(name="data_cadastro")
private Date dataDeCadastro;
public Usuario(){
this.getPerfil().setUsuario(this);
}
(Perfil)
[code]@Entity
public class Perfil
{
@Id
@GeneratedValue
private long id;
@OneToOne
@JoinColumn(name="id_usuario")
private Usuario usuario;
@Column(name="nome")
private String nome;
@Column(name="sobenome")
private String sobreNome;
@Column(name="apelido")
private String apelido;
@Column(name="sexo")
private String sexo;
@Column(name="relacionamento")
private String relacionamento;
@Temporal(TemporalType.DATE)
private Date nascimento;
@Column(name="bairro")
private String bairro;
@Column(name="rua")
private String rua;
@Column(name="numero_rua")
private String numeroRua;
@Column(name="cep")
private String CEP;
@Column(name="cidade")
private String cidade;
@Column(name="estado")
private String estado;
@Column(name="pais")
private String pais;
@Column(name="ddd1")
private String ddd1;
@Column(name="telefone1")
private String telefone1;
@Column(name="ddd2")
private String ddd2;
@Column(name="telefone2")
private String telefone2;
@ManyToMany
@Cascade(CascadeType.ALL)
@JoinTable(name="Amizade", schema="sandro")
private List<Perfil> amigos = new ArrayList<Perfil>();
public Perfil(){
}[/code]
(UsuarioBean)
[code]public class UsuarioBean
{
private Usuario usuario = new Usuario();
public UsuarioBean(){
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public Usuario getUsuario() {
return usuario;
}
public String cadastrar(){
String retorno = "falhaCadastro";
try{
Query q = HibernateUtil.getSession().createQuery("from Usuario u where u.email = :email and u.senha = :senha");
q.setString("email", usuario.getEmail()).setString("senha", usuario.getSenha());
if(q.list().size() == 0){
HibernateUtil.beginTransaction();
usuario.setDataDeCadastro(new Date());
HibernateUtil.getSession().save(usuario);
HibernateUtil.commitTransaction();
usuario = new Usuario();
retorno = "sucessoCadastro";
}
}
catch (Exception e) {
e.printStackTrace();
HibernateUtil.rollbackTransaction();
}
finally{
HibernateUtil.closeSession();
}
return retorno;
}
public String logar(){
String retorno = "falhaLogin";
Query q = HibernateUtil.getSession().createQuery("from Usuario u where u.email = :email and u.senha = :senha");
q.setString("email", usuario.getEmail()).setString("senha", usuario.getSenha());
if(q.list().size() == 1){
usuario = (Usuario) q.uniqueResult();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("userlogged", true);
retorno = "sucessoLogin";
}
HibernateUtil.closeSession();
return retorno;
}
public String atualizaPerfil(){
String retorno = "cancelaAlteracao";
try{
System.out.println(usuario.getId());
System.out.println(usuario.getPerfil().getUsuario());
System.out.println(usuario.getPerfil().getNome());
System.out.println(usuario.getPerfil().getSobreNome());
System.out.println(usuario.getPerfil().getRelacionamento());
HibernateUtil.getSession().beginTransaction();
HibernateUtil.getSession().update(usuario);
HibernateUtil.commitTransaction();
retorno = "sucessoAlteracao";
}
catch (Exception e) {
e.printStackTrace();
HibernateUtil.rollbackTransaction();
}
finally{
HibernateUtil.closeSession();
}
return retorno;
}
}[/code]
(atualizaPerfil.jsp)
<f:view>
<h:form>
<rich:tabPanel switchType="client" width="500px">
<rich:tab label="Dados Pessoais">
<h:panelGrid columns="2">
<h:outputText value="Nome:"/>
<h:inputText value="#{usuarioBean.usuario.perfil.nome}"/>
<h:outputText value="Sobrenome:"/>
<h:inputText value="#{usuarioBean.usuario.perfil.sobreNome}"/>
<h:outputText value="Apelido:"/>
<h:inputText value="#{usuarioBean.usuario.perfil.apelido}"/>
<h:outputText value="Relacionamento:"/>
<h:inputText value="#{usuarioBean.usuario.perfil.relacionamento}"/>
<h:outputText value="Sexo :"/>
<h:selectOneMenu />
</h:panelGrid>
</rich:tab>
<rich:tab label="Endereço">
Here is tab #2
</rich:tab>
<rich:tab label="Telefone">
Here is tab #3
</rich:tab>
</rich:tabPanel>
<h:commandButton value="Atualizar" action="#{usuarioBean.atualizaPerfil}"/>
<h:commandButton value="Cancelar" action="cancelaAlteracao"/>
</h:form>
</f:view>
no atualiza perfil eu consigo exibir tudo do usuario… o id, o nome, sobrenome, relacionamento
inclusive o usuario daquele perfil aqui:
System.out.println(usuario.getPerfil().getUsuario());
mostra o sql da inserção
mais nao aparece no banco
=/
alguem te alguma ideia ?