Ich versuche, dies mit Hibernate zu erreichen: JoinColumn zu einem Fremdschlüssel
Meine Codes ist wie folgt:
Gerätemodell
@Entity
public class Device {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "fk_user", nullable = true, referencedColumnName = "ID")
private User user;
...
}
Statistik Modell
@Entity
public class Statistic {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumn(name = "fk_device", nullable = false, referencedColumnName = "ID"),
@JoinColumn(name = "fk_device_user", nullable = false, referencedColumnName = "fk_user") })
private Device device;
...
}
Allerdings gibt es einen Fehler zu sagen, dass es keine logische Spalte fk_user im Gerät.
Caused by: org.hibernate.MappingException: Unable to find column with logical name: fk_user in device
Ich nehme an, es ist, weil fk_user ein Fremdschlüssel ist. Aber wie kann ich das lösen? Vielen Dank.
Vielen Dank für Ihren Vorschlag. Ich habe den ersten 'referencesColumnName' in' @ JoinColumn' entfernt, bekomme aber immer noch die Fehlermeldung 'Caused by: org.hibernate.MappingException: Spalte mit logischem Namen kann nicht gefunden werden: user_id in device'. – Chiu