2010-11-05 4 views
0

Je vais donc utiliser Flex 4 avec Spring et Hibernate. Tout est configuré et fonctionne. Je sais cela car je peux faire des requêtes simples, comme la liste de toutes les valeurs dans un tableau. Le problème est lorsque j'essaie d'effectuer une requête 'select', puis j'obtiens toutes les valeurs, comme je l'avais avant, et non les attributs spécifiques via la requête Select. Je suis un débutant, alors oubliez mon manque de mots techniquement plus sains ... mais je ne les utilise pas comme je ne veux pas citer.Problème d'exécution de requêtes avec Spring et HIbernate avec FLEX

Ce qui suit est un code qui vous faire comprendre mieux les choses: Ceci est la classe utilisée pour stocker des données provenant de MySQL database--

package flex; 


import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 



@Entity 
@Table(name="intrial1") 
public class intrial1 implements Serializable { 

    @Id @GeneratedValue 
    @Column(name = "id") 
    private int id; 
    @Column(name = "name") 
    private String name; 



    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 


    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    } 

C'est la classe où le sessionFactory fait des choses (trop déclarations d'importation, juste pour essayer de faire des choses au travail ignorent) -

package flex; 

import java.util.ArrayList; 
import java.util.List; 


import javax.persistence.Query; 
import org.hibernate.SessionFactory; 
import org.hibernate.annotations.NamedNativeQueries; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.flex.remoting.RemotingDestination; 
import org.springframework.flex.remoting.RemotingInclude; 
import org.springframework.orm.hibernate3.HibernateTemplate; 
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 
import org.springframework.stereotype.Repository; 



import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.orm.hibernate3.HibernateTemplate; 
import org.springframework.stereotype.Repository; 
import org.springframework.transaction.annotation.Transactional; 

import org.springframework.transaction.annotation.Transactional; 




@Repository 
@RemotingDestination 
public class SpringBean_Service { 


    private SessionFactory sessionFactory; 

    @Autowired 
    public void setSessionFactory(SessionFactory factory) { 
     sessionFactory = factory; 
    } 

    @SuppressWarnings("unchecked") 
    @RemotingInclude 
    @Transactional 
    public List<intrial1> getList() { 

     return sessionFactory.getCurrentSession().createQuery("from intrial1 ").list(); 
    } 

    @SuppressWarnings("unchecked") 
    @RemotingInclude 
    @Transactional 
    public List<intrial1> getListAgain() { 



     org.hibernate.Query q = sessionFactory.getCurrentSession().createQuery("select id from intrial1 where name='chirayu'"); 
     List l = q.list(); 
     return l; 


    } 


    @RemotingInclude 
    @Transactional 
    public void createFriend(String name, int id) { 
     intrial1 f = new intrial1(); 
     f.setName(name); 
     f.setId(id); 
     sessionFactory.getCurrentSession().save(f); 

} 
} 

En classe ci-dessus, getList() fonctionne liste parfaite, toutes les valeurs. Le createFriend est utilisé pour entrer les valeurs de id + nom et fonctionne correctement. Le problème est avec la fonction getListAgain() , il me donne un résultat, imaginez 2 colonnes, ayant pour titre 'id' et 'name', mais énumérant les valeurs d'id dans les deux colonnes (aucun nom), As You peut comprendre, je cherche résultat de la fonction getListAgain() as - "1 colonne ayant l'en-tête comme 'id', et id de la liste partout où le nom = 'chirayu'".

Je vous remercie de votre aide, car j'aurai besoin d'éclaircir cela et d'aller de l'avant avec le développement. Merci.

Cordialement, Chirayu

MISE À JOUR NOTE: voudrais dire une chose ici, si je fais une classe comme ci-dessous, qui est identique à classe intrial1, mais n'a pas de déclaration de retour pour nom, c.-à-pas getName() définie, je reçois mon bon résultat pour la requête -

« select id de intrial1 où name = 'chirayu' »

package flex; 


import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 



@Entity 

public class intrial2 { 

    @Id @GeneratedValue 
    @Column(name = "id") 
    private int id; 
    @Column(name = "name") 
    private String name; 




    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 


    public void setName(String name) { 
     this.name = name; 
    } 

    } 

Est-ce étrange ou censé être comme ça. Toujours à la recherche de réponses

Répondre

1

La requête

select id from intrial1 where name='chirayu' 

ne retourne pas l'entité intrial1, vous devez donc changer le type de retour à la liste ou tout simplement changer votre requête:

from intrial1 where name='chirayu' 
+0

Merci pour la réponse Maurizio, mais en changeant le retour type à 'List', ne permet pas de se connecter en utilisant Blazeds, car il n'a pas de Data Provider (ce qui était le point d'avoir intrial1 class). Aussi, en changeant la requête comme vous avez conseillé ne redonne que 2 colonnes-1er 'id', 2ème 'nom', avec la restriction de liste seulement les valeurs correspondant à name = 'chirayu'. J'ai essayé les deux choses et ensuite une réponse, donc je suis assez sûr ... Veuillez aider si vous ou quelqu'un d'autre peut le faire. – Chirayu

+0

Est-ce que cela change quelque chose si la méthode getListAgain retourne une liste ? –

+0

Sinon, vous pouvez créer un nouvel objet appelé f.i. intrlialDTO avec seulement id et essayer d'obtenir à partir d'hibernate de cette façon: sélectionnez new intrlialDTO (id) de l'intrlial où name = 'chrayu' –

Questions connexes