Posts by T.dot

    Variable 'a' might not have been initialized.


    Langvariante: a wird nicht mit einem Defaultwert initialisiert. Bei der Ausgabe-Zeile kann sein, dass der Wert nicht initialisiert ist. Dies kann passieren, wenn dir bei a = Integer.parseInt(in.readLine()); eine Exception fliegt.

    Habs mal mit der aktuellen HSQL (2.0.1) ausprobiert, zwei Tabellen jeweils mit Spalten ID (integer) + name und konnte hier das Problem nicht nachvollziehen (Statements jeweils über den HSQL-Database-Manager ausgeführt):


    geht alles:
    select * from role inner join user on role.id=user.id
    select * from (role inner join user on role.id=user.id)
    select * from role inner join user on role.id=user.id where role.id=1
    select * from (role inner join user on role.id=user.id) where role.id=1


    Von wo rufst du deine Statements auf, vielleicht hats da irgendwas?

    ich mach nie was mit der HSQL, aber rein vom SQL her:
    "SELECT Mann, Benutzername, Passwort, Gewicht, Erstellzeit From (Nutzer INNERJOIN Programmressourcen ON Nutzer.ID = Programmressourcen.ID);"


    wenn du das where außerhalb der Klammer machst geht's nicht, da dort Nutzer nicht bekannt ist. Du joinst in der Klammer Nutzer und Programmresourcen zusammen (=> subquery) und machst dann auf diese Subquery eine Abfrage.


    Entweder:
    - sparst du dir die Klammer
    - musst du die Where-Clause in der Klammer machen
    - oder der Subquery einen Namen geben
    "SELECT Mann, Benutzername, Passwort, Gewicht, Erstellzeit From (Nutzer INNERJOIN Programmressourcen ON Nutzer.ID = Programmressourcen.ID) sub where sub.ID=123"

    Ich find das geht auch mit einem If (und das zum Parameter prüfen):


    Wenn du derzeit für Domain A Nameserver+Webspace bei einem Provider hast, wäre es das einfachste Domain B das zum gleichen Provider zu übertragen.


    Grundsätzlich muss folgendes eingerichtet werden:
    - Nameserver muss die IP des neuen Servers wissen
    - Server muss wissen, welche Website er beim Aufruf der Domain anzeigen soll.


    Am einfachsten schickst du Provider A ne Mail (außer er hat nen Admin-Interface, wo du das alles selbst machen kannst) und kündigt sobald es rennt Provider B.

    Also richtig macht man das in Eclipse afair so:
    - du hast ein Java-WebProjekt in Eclipse für Java EE
    - im Java Build Path gibts du die notwendigen JARs hinzu (ob die im Projekt liegen oder extern ist eigentlich egal)
    - in den Project-Properties gibt es die Java-EE Module Dependencies. Hier fügts du alle Jars hinzu, die später beim Exportieren ins War-File mitkopiert werden soll
    - Zur Erstellung des WAR-Files klickst du aufs Projekt -> Export -> War File
    - Wenn du dir das exportierte War-Files ansiehst (zip-tool) müssen unter Web-Inf/Lib die vorher gewählten Jar-Files drinn sein
    - Dieses War-File deployst du am Application Server/Servlet Container

    Der Fehler würde heißen, dass es ein Mapping in Tabelle User auf Property Recht gibt und dieses nicht existiert.


    Ich hab das Projekt in Eclipse nachgebaut, krieg hier aber weder bei TestRecht oder bei TestUser einen Fehler. Ev. hast du irgendwas nicht neu kompiliert?


    Das ganze Projekt incl. aller Libs und Sourcen gibts hier (ich hab ne mysql statt der hsql verwendet, sollte egal sein):
    http://t-portal.at/stuff/hibernate_test.zip


    Falls das mehr als ein Testprojekt werden soll ein paar Anmerkungen:
    - Packagenamen sollten immer kleingeschrieben sein, die Hierarchie ist seltsam
    - die find und getAll Methoden sollten genauso eine generische Liste vom richtigen Typ zurückliefern. CreateQuery(..).list() liefert natürlich nur eine Liste, die kannst du ja casten
    - Die UserSet könnte auch ein Set<User> sein
    - Datenbankkonventionen würd ich mir auch überlegen (z.B. alle spalten groß/klein/unterstrich getrennt, jeder PrimaryKey heißt id, der ForeignKey tabelle_id und rechteBEZ würde bei mir einfach bezeichnung heißen, ist ja eh in Tabelle Recht)
    - man kann statt den Mappings+Classfile auch mit Classfile+Annotations arbeiten, bleibt jedem selbst überlassen


    mfg T.

    Liegt an den unterschiedlichen SQL-Dialekten. MS SQL-Server kennt z.B. kein AutoIncrement, hierfür wird Identity verwendet (wie du richtig erkannt hast).


    Die genauen Unterschiede kannst du dir sicher ergoogeln ;)