[Resolvido] Select no hibernate

Estou pegando este erro:

java.lang.NumberFormatException: For input string: "id"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

Meu select com hibernate:

@Override
    public List<Changes> buscarPorFLM() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return session.createQuery("FROM Changes c, Usuario u WHERE u.flm = 'Messi' AND c.id_user = u.id_user").list();
    }

Se eu fizer o mesmo select direto no banco, nao da problemas…aparece a consulta

SELECT c.*, u.* FROM changes c, usuario u WHERE u.flm = 'Messi' AND c.id_user = u.id_user;

Meu Bean:

public List<Changes> getChangesFLM() {
        ChangesDao changesDao = new ChangesDaoImpl();
        changes = changesDao.buscarPorFLM();
        return changes;
    }

Alguma ideia oq pode estar ocorrendo?

Se eu mudo o SQL da forma correta, com o SELECT…ele me retorna este erro

expecting IDENT, found '*' near line 1, column 10 [SELECT c.*, u.* FROM com.changes.model.Changes c, com.changes.model.Usuario u WHERE u.flm = 'Messi' AND c.id_user = u.id_user]

meu select:
@Override public List<Changes> buscarPorFLM() { Session session = HibernateUtil.getSessionFactory().openSession(); return session.createQuery("SELECT c.*, u.* FROM Changes c, Usuario u WHERE u.flm = 'Messi' AND c.id_user = u.id_user").list(); }

Estude sobre o método createSQLQuery da classe Session. Talvez possa te ajudar.

Mostra mais desta StackTrace.

Eu fiz algumas alteracoes, nao esta dando mais o erro q mencionei acima…agora foi para outro rs
As alteracoes q fiz foi adicionar onetomany e onetoone

Erro:
Advertência: JSF1063: AVISO! Definindo valor de atributo não serializável em HttpSession (chave: changesBean, classe do valor: com.changes.bean.ChangesBean). Grave: Error Rendering View[/pages/changes.xhtml] javax.el.ELException: /pages/changes.xhtml @123,71 value="#{changesBean.changesFLM}": org.hibernate.QueryException: could not resolve property: id_user of: com.changes.model.Changes [SELECT c, u FROM com.changes.model.Changes c, com.changes.model.Usuario u WHERE u.flm = 'Luis Henrique' AND c.id_user = u.id_user]

Changes
`@Entity
@Table(name=“changes”)
public class Changes implements java.io.Serializable {

 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name="id",nullable=false)
 private Integer id;
 
 @Column(name="change_number",nullable=false, length=30)
 private String changeNumber;
 
 @Column(name="customer",nullable=false, length=50)
 private String customer;
 
 //Editei os outros campos para nao ficar mto grande 
 
 @Column(name="critical", length=3)
 private String critical;
 
 @OneToOne
 @JoinColumn(name="id_user", referencedColumnName="id_user")
 private Usuario usuario;`

Usuario
`@Entity
@Table(name=“usuario”)
public class Usuario implements Serializable {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_user",nullable=false)
private Integer id_user;

@Column(name="authority",nullable=false, length=20)
private String authority;

//Editei para nao ficar mto grande

@Column(name="bucket",nullable=false, length=10)
private String bucket;

@OneToMany(mappedBy="usuario")
private List<Changes> listaChanges;`

modelagem

Estás a confundir SQL com HQL. O que tu queres deve ser algo como

SELECT c, u FROM com.changes.model.Changes c inner join c.usuario u WHERE u.flm = 'Luis Henrique'

HLQ…exato…falei errado ao mencionar SQL
Entao…se eu fizer a mesma consulta do meu codigo direto no banco, funciona
SELECT c., u. FROM changes c, usuario u WHERE u.flm = ‘Luis Henrique’ AND c.id_user = u.id_user;

agora no HLQ atraves ai da minha aplicacao preciso colocar o innerjoin?

Na verdade acho que a melhor solução é a seguinte:

return session.createQuery("FROM Changes c WHERE c.usuario.flm = 'Messi'").list();

O hibernate se encarrega de fazer o JOIN automaticamente.

Entao dessa forma nao preciso fazer as anotacoes de @OneToOne e/ou ManyToOne ?

Precisa sim. As anotações vão indicar ao Hibernate qual o tipo de relação entre esses objetos para que ele consiga criar ou manusear as tabelas do modo correto.

consegui usando a sua dica do select, marcos …agora consigo fazer.

Mas quando vou cadastrar algo na tabela Changes e estou adicionando para colocar a id_user q vem da tabela Usuario, me gera este erro que estou aqui tentando saber oq eh ainda

Advertência: /pages/changes.xhtml @281,140 value="#{changesBean.change.usuario.idUser}": Target Unreachable, 'null' returned null javax.el.PropertyNotFoundException: /pages/changes.xhtml @281,140 value="#{changesBean.change.usuario.idUser}": Target Unreachable, 'null' returned null

meu html
<p:inputText value="#{changesBean.change.usuario.idUser}" required="true" style="width: 200px" maxlength="40"/>

Changes (somente a parte onde aponto a id_user da outra tabela)
@OneToOne @JoinColumn(name="id_user", referencedColumnName="id_user") private Usuario usuario;

Aí já entrou em algo que eu nunca tentei fazer, então no momento não vou poder te ajudar. Quando tiver um tempo eu experimento.

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name=“id_user”,nullable=false)
private Integer id_user;

O nome do campo não esta diferente? Não esta esperando idUser, e na classe esta id_user?

O @Juferal tem razão, @rafa120. Olha seu html, ele está tentando acessar um atributo que não existe no seu modelo.

Esqueci de dar reply, desculpe. Mas já foi resolvido

return session.createQuery(“FROM Changes c WHERE c.usuario.flm = ‘Messi’”).list();