Tworzę baze danych plus encje w play framework. w tym frameworku tworzy sie tabele w skrypcie dla mysql a pozniej nalezy do tego napisac odpowiednie klasy encji w kodzie Javy...
I tutaj natrafilem na porblemy. Mianowicie - napisalem sobie dwie tabele:
CREATE TABLE Users (
user_id bigint(20) NOT NULL AUTO_INCREMENT,
user_settings_id bigint(20) NOT NULL,
PRIMARY KEY (user_id),
FOREIGN KEY (user_settings_id)
REFERENCES User_settings(user_setting_id)
);
CREATE TABLE User_settings (
user_setting_id bigint(20) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
PRIMARY KEY (user_setting_id)
);
Do tego napisalem odpowiednie encje:
@Entity
@Table(name="USERS")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="USER_ID")
private long userId;
@OneToOne(fetch = FetchType.LAZY, targetEntity = UserSettings.class)
@JoinTable(name = "USER_SETTINGS")
private UserSettings userSettings = new UserSettings();
}
@Entity
@Table(name="USER_SETTINGS")
public class UserSettings {
@Id
@Column(name="USER_SETTINGS_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private long userSettingsId = 0;
private string avatar = "";
}
Czy ktos mógby mi wytumaczyć na czy polega związek pomiędzy kluczami obcymi a relacjami pomiędzy entities?
Czy jezeli pisze relacje w entity (onetomany manytoone itp) to musze robić foreign key w create table?
I jeszcze jedno mam pytanko:
jeżeli Mam powyższe relacje onetoone i będe chcia utworzyć nowego użytkownika potrzebuję również obiektu UserSettings.
U mnie - podczas tworzenia usera wywala bąd ponieważ nie mam żadnych UserSettings :(
Jak to zrobić żeby UserSetting się tworzyy automatycznie gdy User jest tworzony?
Moje drugie pytanie:
Jezeli mamy tą relację onetoone czy jest mozliwość żeby nie tworzyć UserSetting od razu, tylko wtedy kiedy jest potrzebne (pórbowaem fetch = FetchType.LAZY ale nie dziaa.)
za wszelką pomoc jestem baaardzo wdzięczy :)