Ich bin relativ neu zu JPA und Hibernate und versuche zu sehen, wie die @ OneTo One Annotation funktioniert, sagen wir, ich habe eine Entität "Task" mit der folgende Beziehung:Hibernate: @ OneToOne keine "eins zu eins" Beziehung in der Datenbank
@OneToOne
@JoinColumn(name = "manager_id")
private Manager manager;
Und es gibt das Unternehmen „Manager“:
@Entity
@Table(name = "manager")
public class Manager {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String name;
public Manager() {
}
Wenn ich die Testdatei zusammen mit dem „hibernate.hbm2ddl.auto“ auf „Update“ laufen bekomme ich einen Viele zu One-Beziehung in der Datenbank (wie Sie sehen können, gibt es keine eindeutige Einschränkung irgendeiner Art, die es zu einer Eins machen würde Eins-Beziehung):
CREATE TABLE IF NOT EXISTS `timesheet`.`task` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`completed` BIT(1) NOT NULL,
`description` VARCHAR(255) NULL DEFAULT NULL,
`manager_id` BIGINT(20) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `FK3635851B178516` (`manager_id` ASC),
CONSTRAINT `FK3635851B178516`
FOREIGN KEY (`manager_id`)
REFERENCES `timesheet`.`manager` (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
davon zu sein, dass ich zwei Datensätze mit demselben Manager-ID versucht, das Hinzufügen und wurde in der Tat zugegeben, ich habe auch versucht, wie „@Table(name = "Task",uniqueConstraints = @UniqueConstraint(columnNames =...
“ die eindeutige Einschränkung Einstellung aber kein Glück. Also warum passiert das und was ist das Beste an der Verwendung von @OneToOne
annotaion, wenn keine Anwendungslogik angewendet wird, um dies zu überprüfen?
Auch Gibt es eine Chance, dass Hibernate nicht in der Lage ist, richtig die DDL Generation zu tun? (Ich weiß, dass die Generierung von Schemas durch den Ruhezustand nur zum Testen gedacht ist)
Geben Sie Ihre zweite Entitätsklasse – mariusz2108
welche Einheit Sie? Sowohl Aufgabe als auch Manager sind dort –
Ich erwarte auch eine einzigartige Beschränkung, die durch eine @ OneToOne Beziehung erzeugt wird. Ich sehe nicht, wie die angenommene Antwort ... beantwortet dies! – xtian