У меня есть некоторые сущности, определенные в моем бэкэнд-приложении, которые имеют пару отношений @ManytoOne и @OneToMany, но каждое из них выполняется в псевдоклере, что каждое из отношений внешнего и первичного ключа создало дополнительные структуры.И я вижу это исключение при выполнении. Я не уверен, как отменить
Hibernate: создать таблицу user_locations (user_id int4 не ноль, location_id int4 не ноль) Hibernate: изменить таблицу, если существует location_user_id добавить ограничение FKfsq9me9k3dj93oujbfgplkrrxrrключ (user_id_id) ссылается на пользователя 2019-04-08 15: 18: 29.001 ПРЕДУПРЕЖДЕНИЕ 2023 --- [main] ohtsiExceptionHandlerLoggedImpl: GenerationTarget обнаружил команду принятия исключения: ошибка выполнения DDL ", измените таблицу, если существует location_user_id, добавьте ограничениепользователь "через оператор JDBC
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "alter table if exists location_user_id add constraint
FKfsq9me9k3dj93oujbfgplkfrx внешний ключ (user_id_id) ссылается на пользователя" через оператор JDBC
Вот так выглядит моя таблица пользователя:
@Entity
public class User {
private String gmailToken;
private String emailAddress;
@Id
private int Id;
@ManyToMany
private List<Location> locations;
}
Местоположение объекта выглядит следующим образом:
@Entity
public class Location {
private String name;
private String country;
private String countryCode;
private Point geoCordinates;
private double googleRating;
private String phoneNumber;
private ArrayList workingHours = new ArrayList<WorkingHours>();
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
@ManyToMany
private List<User> userId;
}
Есть ли что-то, чего мне здесь не хватает.
Отредактировано, чтобы добавить:
Я изменил объект пользователя навыглядеть так:
public class User {
private String gmailToken;
private String emailAddress;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="USER_ID")
private List<Location> locations;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="USER_ID")
private List<ReviewRequest> reviewRequests;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="USER_ID")
private List<Response> responseForRequests;
public User(String gmailToken){
this.gmailToken =gmailToken;
}
}
И расположение Entity выглядит следующим образом:
открытый класс Location {
private String name;
private String country;
private String countryCode;
private Point geoCordinates;
private double googleRating;
private String phoneNumber;
private ArrayList workingHours = new ArrayList<WorkingHours>();
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int Id;
@ManyToMany(mappedBy = "location")
private List<User> userId;
@OneToMany(mappedBy = "location")
private List<Customer> customerId;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="LOCATION_ID")
private List<ReviewRequest> reviewId;
}
Я все еще сталкиваюсь с проблемами при создании отдельных таблиц и создании столбцов внешнего ключав данной таблице User.
Похоже, что mappedBy и @JoinColumn кажутся неверными?