aew pessoal, estou tendo problemas com hibernate e postgresql…
fiz um treinamento onde usamos o mysql como banco. Porem agora estou tentando usar o PostgreSql para uma aplicação minha… mas como nao obtive sucesso experimentei pegar o exemplo que fizemos no treinamento (que esta funcionando) e só mudei o banco de dados para Postgresql… e adivinhem? Não funcionou. Ele inicia e tudo mais, mas não faz nada quando clico no botao de salvar, q era para inserir um aluno no banco.
Sou iniciante ainda… não sei se precisa de alguma configuração/codigo a mais quando se trata do Postgre…
Qual ajuda seria muito bem vinda e agradecida!
O código:
- Aluno.java
@Entity
@Table(name="aluno", schema="public")
public class Aluno implements Serializable {
private static final long serialVersionUID = -7437910344764284313L;
private Integer cdAluno;
private String nmAluno;
private Date dtNascimento;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="cd_aluno", unique=true, nullable=false)
public Integer getCdAluno() {
return cdAluno;
}
public void setCdAluno(Integer cdAluno) {
this.cdAluno = cdAluno;
}
@Column(name="nm_aluno", length=120)
public String getNmAluno() {
return nmAluno;
}
public void setNmAluno(String nmAluno) {
this.nmAluno = nmAluno;
}
@Temporal(TemporalType.TIMESTAMP) //data e hora
@Column(name="dt_nascimento")
public Date getDtNascimento() {
return dtNascimento;
}
public void setDtNascimento(Date dtNascimento) {
this.dtNascimento = dtNascimento;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
//****** codigo hashCode() ******/
}
Classe abstrata
[code]
public abstract class AbstractBean {
@ManagedProperty(value="#{entityManagerBuilder.entityManager}")
private EntityManager entityManager;
private List<T> lista;
private T selecionado;
public abstract String getEntityName();
public abstract Object getId();
public abstract T createNewEntity();
public void salvar(){
getEntityManager().getTransaction().begin();
if(getId() == null){
getEntityManager().persist(selecionado);
}
else{
getEntityManager().merge(selecionado);
}
getEntityManager().getTransaction().commit();
selecionado = null;
refreshList();
}
public void refreshList(){
lista = getEntityManager().createQuery("from " + getEntityName()).getResultList(); //JBQL - HQL
}
public void excluir(T entity){
getEntityManager().getTransaction().begin();
getEntityManager().remove(entity);
getEntityManager().getTransaction().commit();
selecionado = null;
refreshList();
}
public List<T> getLista() {
if(lista == null){
refreshList();
}
return lista;
}
public void setLista(List<T> lista) {
this.lista = lista;
}
public T getSelecionado() {
if(selecionado == null){
selecionado = createNewEntity();
}
return selecionado;
}
public void setSelecionado(T selecionado) {
this.selecionado = selecionado;
}
public EntityManager getEntityManager() {
return entityManager;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
}[/code]
Classe AlunoBean.java
[code]
@ManagedBean
@ViewScoped
public class AlunoBean extends AbstractBean {
@Override
public String getEntityName() {
return "Aluno";
}
@Override
public Object getId() {
return getSelecionado().getCdAluno();
}
@Override
public Aluno createNewEntity() {
return new Aluno();
}
}[/code]
e o meu persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="EscolaModel" transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>java:jboss/postgresDS</non-jta-data-source>
<class>br.com.veere.escola.model.Aluno</class>
<properties>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Aluno.xhtml
[code]
<h:outputLabel value="Nome: " for="nome" />
<p:inputText value="#{alunoBean.selecionado.nmAluno}" id="nome" />
<h:outputLabel value="Data Nascimento: " for="nascimento" />
<p:calendar value="#{alunoBean.selecionado.dtNascimento}" id="nascimento" navigator="true" />
<p:commandButton value="Salvar" update="@form" action="#{alunoBean.salvar()}" />
<p:commandButton value="Atualizar" update="@form" action="#{alunoBean.refreshList()}" />
</h:panelGrid>
</p:panel>
<p:dataTable value="#{alunoBean.lista}" var="aluno">
<p:column>
<p:commandLink action="#{alunoBean.setSelecionado(aluno)}" update="@form" value="Editar" />
<p:commandLink action="#{alunoBean.excluir(aluno)}" update="@form" value="Excluir" />
</p:column>
<p:column headerText="Código">
#{aluno.cdAluno}
</p:column>
<p:column headerText="Nome">
#{aluno.nmAluno}
</p:column>
<p:column headerText="Data Nascimento">
<h:outputText value="#{aluno.dtNascimento}">
<f:convertDateTime locale="pt_BR" type="date"/>
</h:outputText>
</p:column>
</p:dataTable>
</h:form>
[/code]