Total Pageviews

Friday, January 20, 2012

Iterating over result list from a JPA query

Sometimes when using EJB 3.x, it is necessary to use JPA QL or SQL native queries to fetch objects from the database. It might be used to achieve better performance or to just fetch a particular set of attributes of the object but not the complete object with all its dependencies.

There's one thing you have to keep in mind when doing this: The result list containing the object will be an array of objects!

"The SELECT clause queries more than one column or entity, the results are aggregated in an object array (Object[]) in the java.util.List returned by getResultList( )"

Working example:
 Query query = manager.createQuery("SELECT v1.bitbit, v1.numnum, v1.someTime, t1.username, t1.anotherNum FROM MasatosanTest t1 JOIN MasatoView v1 ON v1.username = t1.username;");  
   
   List results = query.getResultList( ); // Fetches list containing arrays of object  
   
   Iterator it = results.iterator( );  
   
   while (it.hasNext( )) {  
   
     Object[] result = (Object[])it.next(); // Iterating through array object   
   
     Boolean first = (Boolean) result[0]; // Fetching the field from array  
   
     /* Likewise for all the fields, casting accordingly to the sequence in SELECT query*/  
   
   }  
   
   

There's is even the possibility to avoid casting completely by using a constructor expression with the appropriate arguments in the SELECT section:
 SELECT new org.somepackage.XEntity(x.a, x.b) FROM XEntity x  

Remember to declare the appropriate constructor.
The code fragments and the solution in this blog post was taken from this question on stackoverflow.


Monday, January 16, 2012

How to change the DB schema to dbo on SQLServer 2008

Every now and then you are in need to backup and restore databases from one SQL Server to another. Furthermore, sometimes the version of the source SQL Server differs from the version of the target SQL Server.
With SQL Server 2008 Microsoft separated users from schemas.
Imported tables of an imported database may only become accessible with a prefix like "jonathan.MY_TABLE_NAME".
You can change the schema name of those tables using the ALTER SCHEMA command.
It is described in more detail here.
In my case it worked.

Friday, January 06, 2012

How to solve " Target Filesystem doesn't have /sbin/init" on Ubuntu 10.04


I restarted my Ubuntu 10.04 box today and it wouldn't start. It gave me this error:

 mount: mounting /dev/disk/by-uuid/***************************** on /root  
 failed: Invalid argument  
 mount: mounting /sys on /root/sys failed: No such file or directory  
 mount: mounting /dev on /root/dev failed: No such file or directory  
 mount: mounting /sys on /root/sys failed: No such file or directory  
 mount: mounting /proc on /root/proc failed: No such file or directory  
 Target file system doesn't have /sbin/init  
 No init found. Try passing init= bootarg  

So after googling around I found out that this seems to be a common problem ;-)
I have a JMicron RAID controller in my box using a RAID mirror but that doesn't help very much :-( It's a logical error and therefore replicated on the other disk as well.

I found this forum entry which helped me a lot and applied the fix using the following steps:
  1. Install GParted on an USB Stick using Tuxboot (my Linux box does not have a DVD drive)
  2. Boot GParted and wait until the graphical partition editor comes up
  3. Identify the boot partition (mounted on /). My boot partition is named "/dev/mapper/jmicron_GRAID1"
  4. Open a terminal and type in the following command
    sudo e2fsck -f -y -v /dev/mapper/jmicron_GRAID1
  5. When e2fsck finishes it usually must have been corrected some errors. So it's best to take a look into the summary.
  6. Reboot your system
After I applied these steps my system booted up without errors again.
Now I need to identify the source of the problem ...

Thursday, December 08, 2011

Using the Blogger app to post blog entries under android



Well this entry was published using the android app "Blogger" from Google via my milestone.

Seems to work very nicely.

...  2 days later...

Blogger has some drawbacks. On My gingerbread milestone it crashes everytime I try to insert an image.

So now I have switched to "blogaway".

Wednesday, December 07, 2011

Wie man die Größe des Systemfonts in Ubuntu 11.10 ändern kann

Bei Ubuntu 11.10 ist es leider nicht mehr so einfach möglich, den System Font bzw. seine Größe zu ändern.

Auf meinem Netbook ist der Font für mich viel zu groß.

Diese Anleitung zeigt, wie man den Font ändern kann. Ist mir ein Rätsel, warum Ubuntu das nicht standardmäßig in den Systemeinstellungen möglich macht.

Howto configure additional swap file on Linux

I had to restore my linux box from a backup and I also had to configure an additional swap file. Here is a good tutorial how to do this.

Great and short tutorial about Sieve mail filtering

The Sieve mail filtering language is great for filtering email messages on the server side. 
 
I use it heavily for my IMAP account on my homeserver. There is a really good and short tutorial about the syntax with great real world examples. Go and check it out.
 
An introduction to Sieve, the mail filtering language. This tutorial introduces the basic building blocks of a Sieve filter and explains the conceps with many examples.

Clevo M1110 Netbook auf 2GB RAM aufrüsten

Ich habe mein Clevo M1110 Netbook (auch bekannt als Intellibook) von 1GB Ram auf 2GB aufgerüstet.

Da über das Intellibook recht wenig im Internet zu finden ist war ich mir nicht sicher, welcher RAM Baustein passt.

Ich hab dann einfach einen Kingston 2GB SO-DIMM DDR3-1333 mit CL9 bei Mindfactory gekauft und siehe da: Alles funktioniert einwandfrei.

Mein Clevo hat übrigens keine eingebaute Kamera und es handelt sich um das im obigen Link angegebene Modell.

Nissan Connect verträgt sich nicht mit Android 2.1 ...

Das musste ich kürzlich feststellen. 
Beim Versuch via Bluetooth das Telefon mit Nissan Connect zu verbinden scheiterte ich mit zwei Smartphones unterschiedlicher Hersteller kläglich, die jeweils Android 2.1 aufgespielt hatten.
 

Sowohl mit Android 1.6 als auch mit 2.2 und 2.3.7 gibt es keine Probleme...
 

Über die eingesetzte Versionsnummer von Nissan Connect kann ich leider nichts sagen. Außer dass der Nissan Micra ca. 6 Monate alt ist.
 

Vielleicht hilft das ja dem ein oder anderen verzweifelten Nissan Besitzer...

Friday, September 23, 2011

Die gute alte Taskleiste auch in Windows 7


Mit Windows 7 gibt Microsoft die Schnellstart-Leiste zu Gunsten der neuen Taskleiste auf. Für Nutzer, die sich nicht an die neue Taskleiste gewöhnen wollen, hat Microsoft den Schnellstart aber trotzdem mitgeliefert.

Um die Leiste einzublenden, klicke mit der rechten Maustaste auf einen freien Bereich der Taskleiste und wähle 

"Symbolleisten > Neue Symbolleiste" 

aus dem Kontext-Menü. Hangel dich im Explorer-Dialog dann zum Verzeichnis

C:\Benutzer\USERNAME\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

und wähle das Verzeichnis aus.