openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Craig L Russell <Craig.Russ...@Sun.COM>
Subject Re: Understanding getResultList()
Date Wed, 23 Jan 2008 00:10:47 GMT
Hi David,

On Jan 22, 2008, at 3:48 PM, David Beer wrote:

> Hi Guys
>
> The Entry class is actually an entity I just changed the code to use  
> native query as I was getting the same result using just  
> createQuery. I have attached the Entry.class and the class  
> containing the query (EntryQuery). As you can see in EntryQuery  
> there is various code commented out, this is just where I have tried  
> different things.
>
> When I return the list of results and try and display them in a  
> JList with the following code:
>
> data = eq.getAll();
> jList1.setListData((Vector<Entry>)data);

This code is incorrect. You can either create a trivial ListModel or  
create a Vector from the result. Vector<Entry> can be constructed from  
a Collection<Entry>:

Vector<Entry> myVector = new Vector<Entry>(List<Entry>).

I wouldn't worry about the name of the DelegatingResultList artifact  
for now.

Craig
>
>
> I get the following exception:
>
> java.lang.ClassCastException:  
> org.apache.openjpa.kernel.DelegatingResultList cannot be cast to  
> java.util.Vector
>       at  
> veilig.mainui.VeiligTopComponent.<init>(VeiligTopComponent.java:37)
>       at  
> veilig.mainui.VeiligTopComponent.getDefault(VeiligTopComponent.java: 
> 94)
>       at veilig.mainui.VeiligTopComponent 
> $ResolvableHelper.readResolve(VeiligTopComponent.java:149)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at  
> sun 
> .reflect 
> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at  
> sun 
> .reflect 
> .DelegatingMethodAccessorImpl 
> .invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at  
> java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java: 
> 1061)
>       at  
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: 
> 1762)
>       at  
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
>       at java.io.ObjectInputStream.readObject(ObjectInputStream.java: 
> 351)
>       at org.netbeans.modules.settings.convertors.XMLSettingsSupport 
> $SettingsRecognizer.readSerial(XMLSettingsSupport.java:542)
>       at org.netbeans.modules.settings.convertors.XMLSettingsSupport 
> $SettingsRecognizer.instanceCreate(XMLSettingsSupport.java:574)
>       at org.netbeans.modules.settings.convertors.SerialDataConvertor 
> $SettingsInstance.instanceCreate(SerialDataConvertor.java:415)
> [catch] at  
> org 
> .netbeans 
> .core 
> .windows 
> .persistence 
> .PersistenceManager 
> .getTopComponentPersistentForID(PersistenceManager.java:513)
>       at  
> org 
> .netbeans 
> .core 
> .windows 
> .persistence 
> .PersistenceManager.getTopComponentForID(PersistenceManager.java:618)
>       at  
> org 
> .netbeans 
> .core 
> .windows 
> .PersistenceHandler.getTopComponentForID(PersistenceHandler.java:422)
>       at  
> org 
> .netbeans 
> .core.windows.PersistenceHandler.load(PersistenceHandler.java:147)
>       at  
> org 
> .netbeans.core.windows.WindowSystemImpl.load(WindowSystemImpl.java:69)
>       at org.netbeans.core.NonGui$3.run(NonGui.java:205)
>       at  
> java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
>       at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
>       at  
> java 
> .awt 
> .EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java: 
> 273)
>       at  
> java 
> .awt 
> .EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
>       at  
> java 
> .awt 
> .EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java: 
> 173)
>       at  
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
>       at  
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
>       at java.awt.EventDispatchThread.run(EventDispatchThread.java: 
> 121)
>
> Any help or guidance is very much appreciated.
>
> David
>
> Craig L Russell wrote:
>> Hi David,
>>
>> One other thing that occurs to me is whether you're using the  
>> native query appropriately.
>>
>> I assume that Entry.class is *not* an Entity. It's just a plain old  
>> Java class with no persistence annotations.
>>
>> Perhaps we can help better if you would include your Entity.java  
>> and schema in the message. And the exception with stack trace.
>>
>> Regards,
>>
>> Craig
>>
>> On Jan 22, 2008, at 2:55 AM, David Beer wrote:
>>
>>> Hi Patrick
>>>
>>> I will be able to get the exact information retruned later when I  
>>> am back home.
>>>
>>> I am trying to display a list of the items returned from the query  
>>> in a JList (javax.swing.JList). A JList takes either an array, a  
>>> ListModel or a Vector; I was trying to use a Vectory as I can just  
>>> add elements to it and not worry about memory allocation or the  
>>> size of the Vector being too large.
>>>
>>> My point is that when I tried to cast the resulting data from the  
>>> query I got an exception. Cannot Cast Delegate org.apache.openjpa
>>>
>>> I will get the exact data this evening when i get home
>>>
>>> Thanks
>>>
>>> David
>>>
>>> ----- Original Message ----
>>> From: Patrick Linskey <plinskey@gmail.com>
>>> To: users@openjpa.apache.org; david.m.beer@btinternet.com
>>> Sent: Monday, 21 January, 2008 11:52:15 PM
>>> Subject: Re: Understanding getResultList()
>>>
>>> Hi,
>>>
>>>> and in return I am seeing a list containing a delegate and a
>>>> persistence object.
>>>
>>> Can you include a printout of the data you see, or some more  
>>> detailed
>>> explanation, such as class names of the instances returned?
>>>
>>>> display. This is fine with a small amount of records but what  
>>>> about a
>>>> large amount of records.
>>>
>>> Are you concerned about the overhead involved in iterating through a
>>> result list fully just to copy it over to the Vector? If the  
>>> framework
>>> that you are using does not provide any interface-based support,  
>>> then
>>> you might not have many options. One idea might be to try to  
>>> create a
>>> subclass of Vector that overrides most methods to just return values
>>> from the actual backing list.
>>>
>>> -Patrick
>>>
>>> On Jan 21, 2008 3:34 PM, David Beer <david.m.beer@btinternet.com>
>>> wrote:
>>>> Hi All
>>>>
>>>> I have a n issue with using Query getResultList(), I am executing a
>>>> nativeQuery("SELECT * FROM ENTRY", Entry.class). And performing the
>>>> query like so List<Entry> results =
>>> (List<Entry>)query.getResultList();
>>>> and in return I am seeing a list containing a delegate and a
>>>> persistence object.
>>>>
>>>> My main problem is that I am trying to display the resulting data
>>> that
>>>> comes back in a JList, in order to set the list data on a JList you
>>> have
>>>> to have the data in a Vector. So when I tried to cast the  List  
>>>> to a
>>>> Vector I got an exception.
>>>>
>>>> When I perform the same query using TopLink I get back a list of
>>> Objects
>>>> of the type and no extra information. At the moment I am going
>>> through
>>>> the results and getting each Object element and adding to Vector to
>>>> display. This is fine with a small amount of records but what  
>>>> about a
>>>> large amount of records.
>>>>
>>>> What is the best way of getting back just a list of Objects no
>>>> additional data?
>>>>
>>>> Thanks
>>>>
>>>> David
>>>>
>>>
>>>
>>>
>>> -- 
>>> Patrick Linskey
>>> 202 669 5907
>>>
>>>
>>>
>>>
>>
>> Craig Russell
>> Architect, Sun Java Enterprise System http://java.sun.com/products/ 
>> jdo
>> 408 276-5638 mailto:Craig.Russell@sun.com
>> P.S. A good JDO? O, Gasp!
>>
> /*
> * To change this template, choose Tools | Templates
> * and open the template in the editor.
> */
> package veilig.db.query;
>
> import java.util.List;
> import java.util.List;
> import java.util.Vector;
> import java.util.logging.Level;
> import java.util.logging.Logger;
> import javax.persistence.EntityManager;
> import javax.persistence.EntityTransaction;
> import javax.persistence.Query;
> import veilig.entry.Entry;
> import veilig.entry.Entry;
> import veilig.util.db.DatabaseConnection;
>
> /**
> *
> * @author david
> */
> @SuppressWarnings("static-access")
> public class EntryQuery {
>
>    private static final DatabaseConnection dbconn =  
> DatabaseConnection.getInstance();
>    private static EntryQuery instance = null;
>
>    public EntryQuery() {
>    }
>
>    public static EntryQuery getInstance() {
>        if (instance == null) {
>            instance = new EntryQuery();
>        }
>        return instance;
>    }
>
>    public List<Entry> getAll() {
>        //List<Entry> results = null;
>        EntityManager manager = dbconn.getEm();
>        EntityTransaction tx = manager.getTransaction();
>        tx.begin();
>        try {
>            System.out.println("about to run query");
>            Query query = manager.createNativeQuery("SELECT * FROM  
> ENTRY", Entry.class);
>            //Query query = manager.createQuery("SELECT a FROM Entry  
> a");
>            List<Entry> results = (List<Entry>)query.getResultList();
>            /*Vector<Entry> data = new Vector<Entry>(0, 1);
>            for (Entry entry : results) {
>                System.out.println("Name " + entry.getName());
>                /*Entry e = new Entry();
>                e.setId(entry.getId());
>                e.setEmail(entry.getEmail());
>                e.setName(entry.getName());
>                e.setPassword(entry.getPassword());
>                e.setUrl(entry.getUrl());
>                e.setUsername(entry.getUsername());
>                data.add(e);
>                Entry e = entry;
>                data.add(e);
>            }*/
>
>            tx.commit();
>            return results;
>        } catch (Exception exception) {
>             
> Logger.getLogger(EntryQuery.class.getName()).log(Level.SEVERE,  
> "Problem getting list of entries from databse", exception);
>            tx.rollback();
>            return null;
>        }
>    }
> }
> package veilig.entry;
>
> import java.net.URL;
> import java.util.List;
> import java.util.Vector;
> import javax.persistence.CascadeType;
> import javax.persistence.Entity;
> import javax.persistence.GeneratedValue;
> import javax.persistence.GenerationType;
> import javax.persistence.Id;
> import javax.persistence.OneToMany;
> import javax.persistence.OneToOne;
>
> @Entity
> public class Entry implements java.io.Serializable {
>
>    @Id
>    @GeneratedValue(strategy=GenerationType.IDENTITY)
>    private Integer id;
>
>    private String name;
>
>    private String username;
>
>    private String email;
>
>    //private URL url;
>    private String url;
>
>    private char[] password;
>
>    @OneToMany(cascade=CascadeType.ALL)
>    private List<AdditionalInformation> addInfo;
>
>    /**
>     * Constructor
>     */
>    public Entry() {
>    }
>
>    /**
>     *
>     * @return id for this item
>     */
>    public Integer getId() {
>        return id;
>    }
>
>    /**
>     * Sets the id
>     * @param id to be used
>     */
>    public void setId(Integer id) {
>        this.id = id;
>    }
>
>    /**
>     * Name
>     * @return the name of the entry
>     */
>    public String getName() {
>        return name;
>    }
>
>    /**
>     * Sets the name of the Entry
>     * @param name to be used
>     */
>    public void setName(String name) {
>        this.name = name;
>    }
>
>    /**
>     * Username related to the entry
>     * @return username
>     */
>    public String getUsername() {
>        return username;
>    }
>
>    /**
>     * Username related to the entry
>     * @param username to be used
>     */
>    public void setUsername(String username) {
>        this.username = username;
>    }
>
>    /**
>     * The email address associated with this entry
>     * @return email address
>     */
>    public String getEmail() {
>        return email;
>    }
>
>    /**
>     * Sets the email address for this Entry
>     * @param email address for this entry
>     */
>    public void setEmail(String email) {
>        this.email = email;
>    }
>
>    /**
>     * The url or web address for this Entry
>     * @return url - web address
>     */
>    public String getUrl() {
>        return url;
>    }
>
>    /**
>     * Sets the url - web address for this Entry
>     * @param url - web address
>     */
>    public void setUrl(String url) {
>        this.url = url;
>    }
>
>    /**
>     * A list of any additional information about the entry
>     * @return a List containing one or many addition information  
> objects
>     */
>    public List<AdditionalInformation> getAddInfo() {
>        return addInfo;
>    }
>
>    /**
>     * Adds a List of AdditionalInformation Objects
>     * @param ai Ovewrites the current list with the new one
>     */
>    public void setAddInfo(List<AdditionalInformation> ai) {
>        this.addInfo = ai;
>    }
>
>    /**
>     * Adds an object of AdditionalInformation to the list.
>     * @param ai Additionalinformation object to be added
>     */
>    public void addAdditInfo(AdditionalInformation ai) {
>        if(addInfo == null)
>            addInfo = new Vector<AdditionalInformation>(0,1);
>        addInfo.add(ai);
>    }
>
>    public char[] getPassword() {
>        return password;
>    }
>
>    public void setPassword(char[] password) {
>        this.password = password;
>    }
>
>    @Override
>    public String toString() {
>        return this.name;
>    }
>
>
> }
>

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!


Mime
View raw message