Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

1 Zum Seitenanfang

Donnerstag, 1. März 2007, 16:29

java 6 apache derby - Probleme

Hi ich kriege eine
Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.Connection.createQueryObject(Ljava/lang/Class;)Ljava/sql/BaseQuery;
at Master.main(Master.java:17)


in der klasse:
import java.sql.BaseQuery;
import java.sql.DataSet;
import java.sql.Select;

public interface querys extends BaseQuery {
@Select(sql="select * from user")
DataSet getMamas();
}


Jemdand eine Idee?
 

heinervdm

Technik-Admin

Dabei seit: 02.10.2002

Beiträge: 3 772

 

2 Zum Seitenanfang

Freitag, 2. März 2007, 13:50

Wo hast du denn die MySQL klasse her?
ich hatte letztens eine gesucht und keine gefunden, da hatte ich eine selberschreiben müssen...

lass doch mal das @ weg vor dem Select,

bist du dir sicher, das das zuweisen und gleichzeitige übergeben einer Variable funktioniert, ich blaube nämlich nicht...
meiner meinung nach wird da nur true übergeben, und dann wäre es auch gut zu wissen, was für eine Exception da ausgeworfen wird...
Über mich: www.heinervdm.de
Persönlich Mitteilungen an mich bitte als PN (nicht Email) hier im Forum. ICQ und Skype bitte nur in Notfällen.
 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

3 Zum Seitenanfang

Montag, 5. März 2007, 10:52

@Select ist eine Annotation
BaseQuery ist die Annotationsklasse.

Hinweise unter:
http://www.google.com/codesearch?hl=de&l…+file%3Ajava%24
http://de.wikipedia.org/wiki/Apache_Derby

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nocturne« (5. März 2007, 10:56)

 

narfnarf

Haudegen

Dabei seit: 30.11.2002

Beiträge: 678

 

4 Zum Seitenanfang

Dienstag, 6. März 2007, 13:41

Wird das interface "querys" auch irgendwo implementiert? Wo ist den die nicht-abstrakte Methode?
 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

5 Zum Seitenanfang

Dienstag, 6. März 2007, 16:14

Wie ich das Verstanden habe, erstellt DERBY selber die Instanz.
Das ist Master.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.sql.Connection;
import java.sql.DriverManager;

import sun.jdbc.odbc.ee.DataSource;

import com.mysql.jdbc.Driver;

public class Master {
	public static String testM() {
		return "";
	};

	public static void main(String[] args) throws Exception {
		DataSource ds = new DataSource();
		Driver d = new Driver();
		Connection c = DriverManager.getConnection("jdbc:mysql://localhost/grimoire?user=root&password=master");
		c.createQueryObject(querys.class).getMamas();
	}
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nocturne« (6. März 2007, 16:15)

 

narfnarf

Haudegen

Dabei seit: 30.11.2002

Beiträge: 678

 

6 Zum Seitenanfang

Dienstag, 6. März 2007, 16:47

Zitat

Original von nocturne
Wie ich das Verstanden habe, erstellt DERBY selber die Instanz.
[...]


Instanzen können aber nur von nicht-abstrakten Klassen erzeugt werden. Erstellt Derby den Code selber? Wenn ja, wo? Immerhin kann ich in der Klasse Master nur "reines" Java sehen.

EDIT: Äh, du sagst doch du benutzt Derby als DB, wieso dann den MySQL-Treiber?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »narfnarf« (6. März 2007, 16:57)

 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

7 Zum Seitenanfang

Montag, 12. März 2007, 14:14

Hast du dich über Derby informiert?
Du kannst mir nicht helfen wenn du nicht über anotationen informiert bist.
 

narfnarf

Haudegen

Dabei seit: 30.11.2002

Beiträge: 678

 

8 Zum Seitenanfang

Montag, 12. März 2007, 15:33

Na, wenn ich dir nicht helfen kann...
Natürlich habe ich mich über Apache Derby informiert (bzw. kannte ich schon). Nur wo ist der Derby Bezug? AFAIK ist Derby ein DBMS. Du bindest hier aber einen MySQL-Treiber ein.
Ich sehe hier vor allem ein Java-Problem. Die JVM schmeißt eine java.lang.AbstractMethodError-Exception. Und das sagt sun dazu: "Thrown when an application tries to call an abstract method." Daher sehe ich meine Frage doch noch als berechtig an: Wo kommt die konkrete Implementierung der abstrakten Methode, die hier offesichtlich aufgerufen wird, her?
Ich denke, mit einer Antwort auf diese Frage sollte das Problem gelöst sein.
Wenn ich einem Denkfehler erliege wäre ich froh zu wissen, worin er liegt.
 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

9 Zum Seitenanfang

Mittwoch, 14. März 2007, 11:31

Danke auf jeden fall für deine Hilfe bisher.
So einfach ist das aber wohl nicht :-)

Hier ist auch ein Beispiel vorhanden:
http://www.google.com/codesearch?hl=de&q…tailsQuery.java

Die Methode "getLoanDetailsByBorrowerName" in der Javadatei "LoanAppDetailsDAOImpl.java" erstellt selber eine Instanz des Interfaces "LoanAppDetailsQuery ".
Der Inhalt der Methode "getLoanDetailsByBorrowerName" in der JavaDatei "LoanAppDetailsQuery.java" wird tatsächlich von APACHE DERBY erstellt.

Nur bei mir halt nicht. Ich will auch gar nicht wissen, wo ADerby das erstellt.

Warum ich den MySQL Treiber verwende ? Flexibilität, Transparenz und Kompatibilität zu alten Datenbanken und anderen Entwicklern!

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »nocturne« (14. März 2007, 11:34)

 

narfnarf

Haudegen

Dabei seit: 30.11.2002

Beiträge: 678

 

10 Zum Seitenanfang

Mittwoch, 14. März 2007, 13:34

Soweit ich das sehen kann bleib ich dabei: Derby ist ein DBMS und hat mit deinem Problem nichts zu tun.

Das von dir verlinkte Beispiel ist doch sehr aufschlußreich:

Zitat


Die Methode "getLoanDetailsByBorrowerName" in der Javadatei "LoanAppDetailsDAOImpl.java" erstellt selber eine Instanz des Interfaces "LoanAppDetailsQuery ".


Soweit richtig.

Zitat


Der Inhalt der Methode "getLoanDetailsByBorrowerName" in der JavaDatei "LoanAppDetailsQuery.java" wird tatsächlich von APACHE DERBY erstellt.


Ohne, daß du nur einmal auf Derby Bezug nimmst?

Viel spannender ist die Frage, wie im Beispiel das Interface (automatisch) und wie bei die dir implementiert wird.

Im Beispiel:

Quellcode

1
2
query = QueryObjectFactory.createQueryObject(LoanAppDetailsQuery.class, conn);
loanDetails = query.getLoanDetailsByBorrowerName(borrFirstName,borrLastName);


Es wird die hier beschriebene Factory verwendet um das Interface zu implementieren und zu instanziieren.

Du verwendest die Connection dafür. Die benutzt, sofern vorhanden die QueryFactory des DB-Treibers. In dem Fall (Klar an der Exception erkennbar) den von MySQL. Da stellt sich die Frage: Kann der das überhaupt schon (dieser ganze Annotationsmüll ist ja nicht gerade alt und etabliert)? Wie stellt sich denn der Derby-Treiber dabei an? Und wie die Sun-eigene Klasse (Direkt die QueryObjectFactory verwenden)?
Und ich verstehe weiterhin nicht wieso man den MySQL Treiber nimmt, wenn man Derby benutzt.