-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Many-to-One-Beziehung und gleichzeitig Primärschlüssel
PostPosted: Thu Feb 21, 2008 1:50 pm 
Newbie

Joined: Thu Feb 21, 2008 12:55 pm
Posts: 4
Ich habe folgendes Problem, bei dem ich einfach nicht weiterkomme.

Ich habe die Klasse AddressLineType, für die feste vorgegebene Wert in der Datenbank eingetragen sind.
Code:
@Entity
public class AddressLineType {

    @Id
    public int identifier;
    public String description;
}


Nun möchte ich aus der Klasse AddressLine auf diese Klasse referenzieren. Gleichzeitig ist sie dort Teil des Primärschlüssels.
Code:
@Entity
@IdClass(AddressLine.AddressLinePK.class)
public class AddressLine {

    private static class AddressLinePK implements Serializable {

        UUID identifier;
        String name;
        int generatedId;
        AddressLineType addressLineType;
    }

    @Id
    @NotNull
    private UUID identifier;
    @Id
    @NotEmpty
    private String name;
    @Id
    @NotNull
    private int generatedId;
    @Id
    @NotNull
    private AddressLineType addressLineType;
    @NotEmpty
    private String value;
}


Das von mir gewünschte Verhalten ist wie folgt.

Das Attribut addressLineType soll auf die bereits vorhandenen Werte referenzieren. Es soll nicht möglich sein, neue Objekte vom Type AddressLineType zu erzeugen, indem für das Attribut ein neues Objekt erzeugt wird. Das soll zu einem Fehler führen.
Gespeichert werden soll das Ganze in Tabellen, die so aussiehen:
Code:
CREATE TABLE ADDRESSLINETYPE (
      IDENTIFIER INTEGER NOT NULL,
      DESCRIPTION VARCHAR(255)
);
ALTER TABLE ADDRESSLINETYPE ADD PRIMARY KEY (IDENTIFIER);

CREATE TABLE ADDRESSLINE (
      ADDRESSLINETYPE INTGER NOT NULL,
      GENERATEDID INTEGER NOT NULL,
      IDENTIFIER VARCHAR FOR BIT DATA(255) NOT NULL,
      NAME VARCHAR(255) NOT NULL,
      VALUE VARCHAR(255) NOT NULL
);
ALTER TABLE ADDRESSLINE ADD PRIMARY KEY (ADDRESSLINETYPE, GENERATEDID, IDENTIFIER, NAME);
ALTER TABLE ADDRESSLINE ADD FOREIGN KEY (ADDRESSLINETYPE) REFERENCES REFERENCES ADDRESSLINETYPE (IDENTIFIER);


Ich habe es @ManyToOne versucht, aber nicht hinbekommen.

Der momentane Zustand (s.o.), der sich auch bei @ManyToOne nicht geändert hat, ist der, dass das Objekt in ein Binärfeld serialisiert wird und keinerlei Verbindung zu der Tabelle ADDRESSLINETYPES existiert.

Wie kann ich mein gewünschtes Verhalten ereichen??


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.