Ich möchte Hibernate generieren einige Tabellen mit Fremdschlüsseln und so weiter. Ich gebe Ihnen ein Beispiel für die Abfrage i wintern wollen generieren:Hibernate ForeignKey Mapping Anmerkungen
create table RealtimeCost(id INTEGER not null primary key Autoincrement,
mnemonic varchar(50)not null references Exchange(mnemonic),
sid int not null references License(sid),
price numeric(10,2) not null)
so diese Abfrage sollte durch Hibernate Annotations über erzeugt werden. Die entsprechende Klasse ist dies:
@Entity
@Table
public class RealtimeCost {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@MapsId("mnemonic")
@JoinColumn(referencedColumnName="sid")
private String mnemonic;
@MapsId("sid")
@JoinColumn(referencedColumnName="sid")
private Integer sid;
@Column
private Double price;
Beispiel für das, was die mnemonic
in RealtimeCost
sollten abgebildet werden (jeweils mnemonic in RealtimeCost
hat genau 1 Wert in Exchange
):
@Entity
@Table
public class Exchange {
@Id
@Column(name="mnemonic")
private String exchange;
@Column
private String description;
Wie Sie kann ich sehen, habe ein bisschen mit Hilfe der Docs versucht, aber ich konnte die Fremdschlüssel nicht durch Ruhezustand generieren lassen. Es wäre wirklich nett, wenn mir jemand die nötigen Annotationen und Werte für diese Klasse sagen könnte, also kann ich es auch für die anderen Klassen tun. Bitte teilen Sie mir auch mit, ob ich etwas in der Klasse Exchange
ändern muss, damit das Mapping funktioniert. Vielen Dank im Voraus
Ist dies ein Objekt des Typs 'ViewType' auf die ID der Klasse' ViewType' abgebildet? – Aelop
Können Sie mir sagen, wie Sie die Viewtyp-ID annotiert haben? – Aelop
Sorry für die späte Antwort. Ja, es bildet die Entität als ID-Referenz ab. Mit dem FetchType können Sie weiter spezifizieren, wie es geladen werden soll. (Lazy oder Eager) Der ViewType ist mit diesem '@AttributeOverrides ({@AttributeOverride (Name =" ID ", Spalte = @Column (Name =" VIEWTYPE_ID ")) }) Annotated aber diese Annotation ist bei der Definition der Klasse . da wir eine andere Strategie zur Deklaration von Entitäten verwenden. Die ID-Spalte ist jedoch mit @Id versehen. Dies ist eine Beispielannotation für den Abruftyp '@ javax.persistence.Basic (fetch = javax.persistence.FetchType.EAGER, optional = false)' – Nico