Hallo zusammen, ich bin gerade dabei, eine Artikelnummer erstellen zu lassen. Die ersten Ziffern sollen jeweils die ID der Rubrik und Unterrubrik usw. angeben, zu der der Artikel gehört, die letzten 3 Ziffern sollen für die laufende Nummer verwendet werden. Hierzu frage ich ab, wieviele Artikel bereits in der Tabelle Artikel in der Datenbank (MySQL) enthalten sind. Zu diesem Ergebnis soll dann 1 hinzuaddiert werden, um die laufende Nummer des aktuellen Artikels zu erhalten.
Versucht zu realisieren habe ich das folgendermaßen:
allerdings bekomme ich hier immer folgende Fehlermeldung:
Hiernach liegt das Problem bei
Ich verwende hier aber nur Integerwerte. Weiß jemand, womit der Fehler zusammenhängt oder wie ich ihn beheben kann? Habe schon versucht, lfdNr als Long anzugeben, bekomme aber dieselbe Fehlermeldung. Kann es damit zusammenhängen, dass ich in der Tabelle Bigint-Werte verwende? Ich meine eigentlich nicht, weil das Ergebnis ja nur die Anzahl der Einträge zurückliefern soll, was im Debugging auch funktioniert.
Versucht zu realisieren habe ich das folgendermaßen:
Code:
String rub1 = Long.toString(artikel.getRubrik1().getId());
String rub2 = Long.toString(artikel.getRubrik2().getId());
String rub3 = Long.toString(artikel.getRubrik3().getId());
List<Integer> result = getSession().createQuery(Artikel.COUNT_ARTIKEL).list();
int lfdNr = 1;
if(!result.isEmpty()){
lfdNr = result.get(0)+1;
}
String artnr = rub1+rub2+rub3+lfdNr;
artikel.setArtikelnummer(Integer.valueOf(artnr));
allerdings bekomme ich hier immer folgende Fehlermeldung:
6.12.2008 16:42:11 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet MainController threw exception
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
at edu.ba.gruppe2.shop.CmdCreateArticle.process(CmdCreateArticle.java:150)
at edu.ba.api.AbstractCommand.run(AbstractCommand.java:122)
at edu.ba.api.AbstractModule.dispatch(AbstractModule.java:116)
at edu.ba.gruppe2.MainController.doGet(MainController.java:95)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Hiernach liegt das Problem bei
Code:
lfdNr = result.get(0)+1;
Ich verwende hier aber nur Integerwerte. Weiß jemand, womit der Fehler zusammenhängt oder wie ich ihn beheben kann? Habe schon versucht, lfdNr als Long anzugeben, bekomme aber dieselbe Fehlermeldung. Kann es damit zusammenhängen, dass ich in der Tabelle Bigint-Werte verwende? Ich meine eigentlich nicht, weil das Ergebnis ja nur die Anzahl der Einträge zurückliefern soll, was im Debugging auch funktioniert.