Problemas com JPA

Olá Pessoal,
Estou iniciando nessa parte de JPA, porém não estou conseguindo fazer uma consulta. Aparece o erro q não encontra minha tabela.

Segue abaixo os códigos e o erro:

@Entity
@Table(name=“tb_cliente”)
public class Cliente {

@Id 
private int cod_cliente;
private String cod_endereco;
private int cod_tipo_cliente;
private String senha;
private String email;

@OneToOne (fetch=FetchType.EAGER,cascade={CascadeType.REFRESH})
@JoinColumn(name="cod_endereco",updatable= false,insertable=false)
private Endereco endereco;

@OneToOne (fetch=FetchType.EAGER,cascade={CascadeType.REFRESH})
@JoinColumn(name="cod_tipo_cliente", updatable= false,insertable=false)
private TipoCliente tipoCliente;


public int getCod_cliente() {
	return cod_cliente;
}

public void setCod_cliente(int cod_cliente) {
	this.cod_cliente = cod_cliente;
}

public String getCod_endereco() {
	return cod_endereco;
}

public void setCod_endereco(String cod_endereco) {
	this.cod_endereco = cod_endereco;
}

public int getCod_tipo_cliente() {
	return cod_tipo_cliente;
}

public void setCod_tipo_cliente(int cod_tipo_cliente) {
	this.cod_tipo_cliente = cod_tipo_cliente;
}

public String getEmail() {
	return email;
}

public void setEmail(String email) {
	this.email = email;
}

public String getSenha() {
	return senha;
}

public void setSenha(String senha) {
	this.senha = senha;
}

public Endereco getEndereco() {
	return endereco;
}

public void setEndereco(Endereco endereco) {
	this.endereco = endereco;
}

public TipoCliente getTipoCliente() {
	return tipoCliente;
}

public void setTipoCliente(TipoCliente tipoCliente) {
	this.tipoCliente = tipoCliente;
}

public class ClienteDAO extends JpaDaoSupport implements ClienteServiceDAO{

	@Transactional
	public Cliente find(Integer id) {
		return getJpaTemplate().find(Cliente.class,id);		
	}
	
	@Transactional
	public void delete(Integer id) {
		Cliente f = find(id);
		getJpaTemplate().remove(f);		
	}
	
	@Transactional
	public void save(Cliente func) {
		getJpaTemplate().persist(func);		
	}
	
	public Cliente findAll() {
        return (Cliente) getJpaTemplate().find("select f FROM tb_cliente f");
    }

}

***Erro

javax.servlet.ServletException: org.hibernate.hql.ast.QuerySyntaxException: tb_cliente is not mapped [select f FROM tb_cliente f]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: tb_cliente is not mapped [select f FROM tb_cliente f]
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:518)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)

Obrigado

Amigo, teu problema está na sintaxe da tua query,

select f FROM tb_cliente f

A clausula FROM deve se originar da classe e não da tabela, esta é uma das grandes utilidades deste tipo de QL

tua query ficaria assim:

select f FROM Cliente f

Abraço!

:thumbup:

Vlw cara pela dica.
Fiz essa alteração porém está aparecendo essa nova mensagem de erro.

Agora não entendi… :?

javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: could not execute query; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:518)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)

Obrigado!!!

O problema é a tua implementação do findAll.

 public Cliente findAll() {
return (Cliente) getJpaTemplate().find("select f FROM tb_cliente f");
} 

Este tipo de método deve retornar uma List<Cliente> e não um unico objeto Cliente

Eu implementaria assim(exemplo):

public List&lt;Cliente&gt; findAll(){
    Query query = getJpaTemplate().createQuery("select f FROM Cliente f");
    return (List&lt;Cliente&gt;)query.getResultList;
}

Verdade cara…não reparei nisso.
Fiz a alteração e mesmo assim persiste no erro : :?

javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: could not execute query; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:518)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)

Cara, aí pode ser problema de configuração, dá uma revisada no teu persistence.xml, vê se as classes persistentes estão configuradas corretamente, de repente ele não está reconhecendo o Cliente como entidade, por isto está dando erro de sintaxe do sql.

:thumbup:

Obrigado cara…fou fazer isso!!!
Vlw pela ajuda!!! :lol:

Funcionou cara!!! vlw
Alterei o persistence, e o applicationContext.xml.
Aí funcionou!!!
Obrigado!!!

:stuck_out_tongue: :lol:

Funcionou cara!!! vlw
Alterei o persistence, e o applicationContext.xml.
Aí funcionou!!!
Obrigado!!!

:stuck_out_tongue: :lol: