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!
|