Bom dia… O erro que eu tinha agora a pouco eu consegui resolver mas agora o meu problema é outro…
Primeiramente eu queria informar que eu ja revirei todos os materiais possiveis e não consegui achar nada que esclareça a minha duvida…
eu queria saber como eu faço para usar certinho o hibernate com o spring security só que configurando um arquivo chamado persistence.xml.
O meu arquivo 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="TestePrimeFacesPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.rfmagni.tcc.springsecurity.beans.ContaReceber</class>
<class>com.rfmagni.tcc.springsecurity.beans.Permissao</class>
<class>com.rfmagni.tcc.springsecurity.beans.NotaFiscal</class>
<class>com.rfmagni.tcc.springsecurity.beans.Usuario</class>
<class>com.rfmagni.tcc.springsecurity.beans.Pessoa</class>
<class>com.rfmagni.tcc.springsecurity.beans.Produto</class>
<class>com.rfmagni.tcc.springsecurity.beans.Endereco</class>
<class>com.rfmagni.tcc.springsecurity.beans.NotaFiscalHasProduto</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.username" value="postgres"/>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.password" value="postgres"/>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/SpringSecurity"/>
</properties>
</persistence-unit>
</persistence>
A minha classe usuarioDAO
@Component
public class UsuarioDAO<Usuario> {
private static EntityManagerFactory emf;
private EntityManager em;
public UsuarioDAO() {
if (emf == null) emf = Persistence.createEntityManagerFactory("TestePrimeFacesPU");
em = emf.createEntityManager();
}
public void persistir(Usuario usuario) {
em.getTransaction().begin();
em.persist(usuario);
em.getTransaction().commit();
}
public void remover(Usuario usuario) {
em.getTransaction().begin();
em.remove(usuario);
em.getTransaction().commit();
}
public void alterar(Usuario usuario) {
em.getTransaction().begin();
em.merge(usuario);
em.getTransaction().commit();
}
public List<Usuario> executeNamedQuery(String namedQuery) {
Query query = em.createNamedQuery(namedQuery);
return query.getResultList();
}
public Usuario procurarUsuario(String username) {
Query query = em.createNamedQuery("Usuario.findByUsername").setParameter("username", username);
return (Usuario) query.getSingleResult();
}
public Usuario findById(Class classe,Object id) {
return (Usuario)em.find(classe, id);
}
}
A minha classe ValidaUsuario
@Component("validaUsuario")
public class ValidaUsuario implements UserDetailsService{
@Autowired
private UsuarioDAO userDAO;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
UserDetails user = (UserDetails) userDAO.procurarUsuario(username);
return user;
}
}
E o meu código do applicationContext
<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security"
xmlns:b="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd
">
<http auto-config="true" access-denied-page="/index.xhtml">
<intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
<intercept-url pattern="/paginas/**" access="ROLE_USER" />
<form-login login-page="/index.xhtml" />
</http>
<authentication-manager>
<authentication-provider user-service-ref="validaUsuario"/>
</authentication-manager>
</b:beans>
Caso alguém possa ajudar ficarei agradecido,
Obs: a minha aplicação é só javaWeb normal e não javaEE