Bom dia Senhores…
Gostaria de uma ajuda de vocês para resolver um problema que estou tendo em uma aplicação que estou fazendo.
É o seguinte, tenho uma tela para cadastro de usuário onde será possível cadastrar 2 tipos de usuários diferentes.
Possuo a entidade Usuario e suas subclasses UserTransp e UserCliente
Usuario.java
@Entity
@Table(name="users")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="tipo_user",discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("0")
public class Usuario implements Serializable {
@Id
@GeneratedValue
@Column(name="id")
private int id;
@Column(name="user_name")
private String user_name;
@Column(name="user_pass")
private String user_pass;
// GETTERS E SETTERS
O método da classe DAO
public void salvar(Usuario usuario) {
session = ConnectionFactory.getInstance();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(usuario);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
tx.rollback();
} finally {
session.close();
}
}
A classe usuarioBean.
public class UsuarioBean {
private Usuario usuario = new Usuario();
private Usuario userCliente = new UserCliente();
private Usuario userTransp = new UserTransp();
private DataModel model;
InterfaceUsuarioDao idao = new UserDao();
private int tipo_usuario;
public String create() throws DaoException {
// Se o tipo_usuario for 1 cadastra usuário transportadora, caso for 2
// cadastra usuário cliente
if (tipo_usuario == 1) {
idao.salvar(userTransp);
} else {
idao.salvar(userCliente);
}
return "sucessoCreate";
}
Abaixo a minha página com o formulário para cadastro.
<h:form>
<rich:panel styleClass="#panel">
<f:facet name="header">
<rich:toolbar id="toolbar" styleClass="toolbar"
itemSeparator="line">
<rich:toolbarGroup itemSeparator="line">
<h:commandButton action="#{usuarioBean.create}" id="save"
image="/images/save.png">
</h:commandButton>
<h:commandButton immediate="true" action="cancelaCadastro"
id="cancelar" image="/images/cancelar.png">
</h:commandButton>
</rich:toolbarGroup>
</rich:toolbar>
<h:outputText value="Cadastro de Usuário" />
</f:facet>
<h:panelGrid columns="3">
<h:outputText value="E-mail" />
<h:inputText value="#{usuarioBean.usuario.user_name}" id="login"
required="true" label="Login" />
<rich:messages for="login">
<f:facet name="errorMarker">
<h:graphicImage value="/images/error.gif" />
</f:facet>
</rich:messages>
<h:outputText value="Senha" />
<h:inputSecret value="#{usuarioBean.usuario.user_pass}" id="senha"
required="true" label="Senha" />
<rich:messages for="senha">
<f:facet name="errorMarker">
<h:graphicImage value="/images/error.gif" />
</f:facet>
</rich:messages>
<h:outputText value="Tipo Usuario" />
<h:selectOneMenu value="#{usuarioBean.tipo_usuario}"
id="tipo_usuario" label="Tipo Usuario">
<f:selectItem itemLabel="Selecione" />
<f:selectItem itemLabel="Cliente" itemValue="2" />
<f:selectItem itemLabel="Transportadora" itemValue="1" />
</h:selectOneMenu>
<rich:messages for="fornecedor">
<f:facet name="errorMarker">
<h:graphicImage value="/images/error.gif" />
</f:facet>
</rich:messages>
</h:panelGrid>
</rich:panel>
</h:form>
O problema que está ocorrendo é o seguinte, o user_name e user_pass está gravando no banco como NULL.
Alguém sabe o que pode estar errado?