Hibernate: Artikelnummer aus verschiedenen ID's zusammensetzen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hibernate: Artikelnummer aus verschiedenen ID's zusammensetzen

    Hallo zusammen,
    ich bin gerade dabei, einen Onlineshop zu erstellen.
    Die Vorgaben hierfür sind:
    - MySQL als Datenbank
    - Hibernate für die Kommunikation mit der Datenbank
    - Darstellung der dynamischen Inhalte in JSP
    - Logik in Java

    Momentan stehe ich vor dem Problem, dass ich eine Artikelnummer generieren möchte, die sich wie folgt zusammensetzt:
    [ID der Rubrik] + [ID der Unterrubrik] + [fortlaufende Nummer]

    Im Idealfall bezieht sich die fortlaufende Nummer auf die Kombination der ID's der Rubriken.


    Es gibt eine Tabelle "Rubrik" mit der Bezeichnung der Rubrik und einer ID, ebenso eine für die Unterrubrik.
    Jede dieser Tabellen ist jeweils mit der Artikeltabelle verknüpft.
    Der Datentyp der ID's ist in Java "Long", in MySQL "bigint".

    Momentan ist der Stand der Dinge, dass ich in der JSP zum Artikel anlegen die Rubrik (und Unterrubrik) per Dropdownfeld auswähle und die ID der jeweils ausgewählten Rubrik in die Artikeltabelle gespeichert wird,
    sobald ich auf den Submit-Button klicke.

    Wie kann ich jetzt die Artikelnummer wie oben genannt zusammenstellen undl dann, nachdem in JSP der Submit aufgerufen wird, in die Tabelle "Artikel" speichern, damit diese Nummer und dort als ID dient?
    Meine Überlegung ist, die einzelnen ID's sowie die fortlaufende Nummer in Strings umzuwandeln, diese aneinanderzuhängen, dann wieder in Long oder INT zu wandeln und abzuspeichern.
    Allerdings weiß ich nicht, an welcher Stelle das dann passieren muss, und ob das so möglich ist.

    Würde mich freuen, wenn mir hier jemand helfen könnte.

    Ich poste hier noch die Code-Ausschnitte der Klassen und Stellen daraus, die nach meinem Verständnis hierfür wichtig sind.
    Hier die Klasse "Artikel" in der die "Struktur" des Artikels angegeben ist

    Quellcode

    1. package edu.ba.gruppe2.shop.model;
    2. public class Artikel {
    3. //Variablen
    4. private Long id; //soll die Artikelnummer werden
    5. private String artikelnummer;
    6. private Rubrik1 rubrik1; //Rubrik
    7. private Rubrik2 rubrik2; //Unterrubrik
    8. //Getter- und Settermethoden
    9. public Long getId() {
    10. return id;
    11. }
    12. public void setId(Long id) {
    13. this.id = id;
    14. }
    15. public Rubrik1 getRubrik1() {
    16. return rubrik1;
    17. }
    18. public void setRubrik1(Rubrik1 rubrik1) {
    19. this.rubrik1 = rubrik1;
    20. }
    21. public Rubrik2 getRubrik2() {
    22. return rubrik2;
    23. }
    24. public void setRubrik2(Rubrik2 rubrik2) {
    25. this.rubrik2 = rubrik2;
    26. }
    27. }
    Alles anzeigen

    Quellcode

    1. package edu.ba.gruppe2.shop;
    2. import java.io.IOException;
    3. import java.util.ArrayList;
    4. import java.util.List;
    5. import javax.servlet.ServletException;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. import org.apache.log4j.Logger;
    9. import org.hibernate.Transaction;
    10. import edu.ba.api.AbstractCommand;
    11. import edu.ba.api.ErrorMessage;
    12. import edu.ba.api.ICommand;
    13. import edu.ba.api.IErrorMessage;
    14. import edu.ba.api.IMessage;
    15. import edu.ba.api.IModule;
    16. import edu.ba.api.Message;
    17. import edu.ba.gruppe2.shop.model.Artikel;
    18. import edu.ba.gruppe2.shop.model.Rubrik1;
    19. import edu.ba.gruppe2.shop.model.Rubrik2;
    20. import edu.ba.gruppe2.shop.model.Rubrik3;
    21. public class CmdCreateArticle extends AbstractCommand implements ICommand {
    22. private Artikel artikel = null;
    23. private List <Rubrik1> rubrikauswahl;
    24. private List <Rubrik2> unterrubrikauswahl;
    25. /**
    26. * Der Name dieses Commands.
    27. */
    28. public static final String NAME = "CmdCreateArticle";
    29. /**
    30. * Die JSP-Seite auf die mit diesem Command umgeleitet wird.
    31. */
    32. public static final String JSP = "createArticle.jsp";
    33. public static final String PARAM_ID = "artikelID";
    34. public static final String PARAM_RUBRIK = "rubrik";
    35. public static final String PARAM_UNTERRUBRIK = "unterrubrik";
    36. public static final String PARAM_STATUS = "status";
    37. public CmdCreateArticle(IModule pModule) {
    38. super(NAME, pModule);
    39. }
    40. public String process(HttpServletRequest request,
    41. HttpServletResponse response) throws IOException, ServletException {
    42. if(request.getParameter(PARAM_ID) != null && request.getParameter(PARAM_ID).length() > 0){
    43. artikel = (Artikel) getSession().get(Artikel.class, Long.valueOf(request.getParameter(PARAM_RUBRIK)));
    44. }
    45. rubrikauswahl = Rubrik1.getRubriken(getSession());
    46. unterrubrikauswahl = Rubrik2.getUnterrubriken(getSession());
    47. List<IErrorMessage> errors = this.validate(request);
    48. if (errors.size() > 0) {
    49. // Es gab Fehler bei der Validierung des Requests!
    50. request.setAttribute(IErrorMessage.KEY_PROPERTYERRORS, errors);
    51. return JSP;
    52. }
    53. Transaction tx = getSession().beginTransaction();
    54. Artikel artikel = new Artikel();
    55. artikel.setRubrik1((Rubrik1)getSession().get(Rubrik1.class, Long.valueOf(request.getParameter(PARAM_RUBRIK))));
    56. artikel.setRubrik2((Rubrik2)getSession().get(Rubrik2.class, Long.valueOf(request.getParameter(PARAM_UNTERRUBRIK))));
    57. Long id = (Long) getSession().save(artikel);
    58. String msg = String.format("Ein Artikel mit der ID %s wurde erfolgreich angelegt.", id);
    59. logger.info(msg);
    60. request.setAttribute(IMessage.KEY_MESSAGE, new Message(msg));
    61. tx.commit();
    62. return JSP;
    63. }
    64. public Artikel getArtikel(){
    65. return artikel;
    66. }
    67. public List<Rubrik1> getRubriken() {
    68. return rubrikauswahl;
    69. }
    70. public List<Rubrik2> getUnterrubriken() {
    71. return unterrubrikauswahl;
    72. }
    73. }
    Alles anzeigen




    Hier die JSP:

    Quellcode

    1. <%@page import="edu.ba.gruppe2.Constants"%>
    2. <%@page import="edu.ba.gruppe2.shop.ShopModul"%>
    3. <%@page import="edu.ba.gruppe2.shop.CmdCreateArticle"%><form ACTION="<%=Constants.URL_BIN%>" METHOD="get">
    4. <%@page import="edu.ba.gruppe2.shop.model.Rubrik1" %>
    5. <%@page import="edu.ba.gruppe2.shop.model.Rubrik2" %>
    6. <%@page import="edu.ba.gruppe2.shop.model.Artikel" %>
    7. <%@page import="edu.ba.api.IErrorMessage"%>
    8. <%@page import="java.util.*"%>
    9. <jsp:includepage="messageSection.jsp" flush="true" />
    10. <input TYPE="hidden" NAME="module" VALUE="<%=ShopModul.NAME%>">
    11. <input TYPE="hidden" NAME="action" VALUE="<%=ShopModul.ACTION_CREATE_ARTICLE%>">
    12. <table>
    13. <% CmdCreateArticle cmd = (CmdCreateArticle) request.getAttribute(CmdCreateArticle.NAME); %>
    14. <tr>
    15. <td>Rubrik:</td>
    16. <td> <select name="<%=CmdCreateArticle.PARAM_RUBRIK%>">
    17. <% for(Iterator<Rubrik1> iter = cmd.getRubriken().listIterator(); iter.hasNext();) {
    18. Rubrik1 rubrikauswahl = iter.next(); %>
    19. <option value="<%=rubrikauswahl.getId()%>"
    20. <%if (cmd.getArtikel() != null && cmd.getArtikel().getRubrik1() != null && rubrikauswahl.getId()==cmd.getArtikel().getRubrik1().getId())
    21. out.print(" selected");%>><%=rubrikauswahl.getRubriktext()%></option>
    22. <%} %>
    23. </select></td>
    24. </tr>
    25. <tr>
    26. <td>Unterrubrik:</td>
    27. <td> <select name="<%=CmdCreateArticle.PARAM_UNTERRUBRIK%>">
    28. <% for(Iterator<Rubrik2> iter = cmd.getUnterrubriken().listIterator(); iter.hasNext();) {
    29. Rubrik2 unterrubrikauswahl = iter.next();%>
    30. <option value="<%=unterrubrikauswahl.getId()%>"<%if (cmd.getArtikel() != null && cmd.getArtikel().getRubrik2() != null && unterrubrikauswahl.getId()==cmd.getArtikel().getRubrik2().getId())
    31. out.print(" selected");%>><%=unterrubrikauswahl.getUnterrubriktext()%></option>
    32. <%} %>
    33. </select></td>
    34. </tr>
    35. <tr>
    36. <td colspan="2"><input TYPE="Submit" VALUE="CREATE"></td>
    37. </tr>
    38. </table>
    39. </form>
    Alles anzeigen


    Und noch der Ausschnitt aus dem Mappingfile:

    Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE hibernate-mapping PUBLIC
    3. "-//Hibernate/Hibernate Mapping DTD//EN"
    4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    5. <hibernate-mapping>
    6. <class name="edu.ba.gruppe2.shop.model.Artikel" table="ARTIKEL">
    7. <id name="id" column="ID" />
    8. <many-to-one name="rubrik1" column="RUBRIK_ID" class="edu.ba.gruppe2.shop.model.Rubrik1"/>
    9. <many-to-one name="rubrik2" column="UNTERRUBRIK_ID" class="edu.ba.gruppe2.shop.model.Rubrik2"/>
    10. </class>
    11. </hibernate-mapping>
    Alles anzeigen