休眠创建一个不存在的 table
Hibernate creating a table that doesn't exist
我正在使用 intelij、java、spring 和 hiberante 在我的 mysql 数据库中创建 tables。我的代码执行没有问题,但由于某种原因,hibernate 创建了一个 table 我删除了。 table 将具有多对多关系的两个实体与复合键连接起来。删除了一个实体,因此复合键 table 也被删除,因为它不再需要。我更新了另一个 table 所以没有剩余的连接。我尝试将 hibernates ddl-auto 从更新更改为创建。它会删除所有内容并使用不存在的 table 创建所有内容。我还在 mysql workbench 中多次删除了整个架构。我假设在休眠中的某个地方有一些剩余数据,但我找不到它,特别是因为相同的代码在另一台计算机上工作,它不会创建已删除的 table.
这是我的应用程序属性中的休眠部分:
# Hibernate properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
spring.jpa.hibernate.ddl-auto=create
下面是我没有删除的实体,它连接到 projection_seat_list,它不再存在以及座位实体:
@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "projections")
public class Projection {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int projectionId;
@Column(name = "date")
private String date;
@Column(name = "startTime")
private String startTime;
@ManyToOne
@JoinColumn(name = "idHall")
private Hall hall;
@ManyToOne
@JoinColumn(name = "idMovie")
private Movie movie;
@Column(name = "seatList")
@ElementCollection
private List<Integer> seatList;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "projection", cascade = CascadeType.ALL)
private List<Ticket> ticketList;
}
This is the part of the output code regarding the problem when app is executed:
Hibernate: drop table if exists `projection_seat_list`
Hibernate: drop table if exists `projections`
Hibernate: create table `projection_seat_list` (`projection_id` integer not null, `seat_list` integer) engine=MyISAM
Hibernate: create table `projections` (`id` integer not null, `date` varchar(255), `start_time` varchar(255), `id_hall` integer, `id_movie` integer, primary key (`id`)) engine=MyISAM
Hibernate: alter table `projection_seat_list` add constraint `FK8rkfyw0lua4jjaamrw3kl3llo` foreign key (`projection_id`) references `projections` (`id`)
如果您想查看结构,这是我在 github 上的全部代码:
这是我的错误,因为我的投影模型中有一个列表,并且自动创建了另一个 table,因为你没有列表。我感到困惑,因为创建的名称 table 与我之前删除的名称相同。
我正在使用 intelij、java、spring 和 hiberante 在我的 mysql 数据库中创建 tables。我的代码执行没有问题,但由于某种原因,hibernate 创建了一个 table 我删除了。 table 将具有多对多关系的两个实体与复合键连接起来。删除了一个实体,因此复合键 table 也被删除,因为它不再需要。我更新了另一个 table 所以没有剩余的连接。我尝试将 hibernates ddl-auto 从更新更改为创建。它会删除所有内容并使用不存在的 table 创建所有内容。我还在 mysql workbench 中多次删除了整个架构。我假设在休眠中的某个地方有一些剩余数据,但我找不到它,特别是因为相同的代码在另一台计算机上工作,它不会创建已删除的 table.
这是我的应用程序属性中的休眠部分:
# Hibernate properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
spring.jpa.hibernate.ddl-auto=create
下面是我没有删除的实体,它连接到 projection_seat_list,它不再存在以及座位实体:
@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "projections")
public class Projection {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int projectionId;
@Column(name = "date")
private String date;
@Column(name = "startTime")
private String startTime;
@ManyToOne
@JoinColumn(name = "idHall")
private Hall hall;
@ManyToOne
@JoinColumn(name = "idMovie")
private Movie movie;
@Column(name = "seatList")
@ElementCollection
private List<Integer> seatList;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "projection", cascade = CascadeType.ALL)
private List<Ticket> ticketList;
}
This is the part of the output code regarding the problem when app is executed:
Hibernate: drop table if exists `projection_seat_list`
Hibernate: drop table if exists `projections`
Hibernate: create table `projection_seat_list` (`projection_id` integer not null, `seat_list` integer) engine=MyISAM
Hibernate: create table `projections` (`id` integer not null, `date` varchar(255), `start_time` varchar(255), `id_hall` integer, `id_movie` integer, primary key (`id`)) engine=MyISAM
Hibernate: alter table `projection_seat_list` add constraint `FK8rkfyw0lua4jjaamrw3kl3llo` foreign key (`projection_id`) references `projections` (`id`)
如果您想查看结构,这是我在 github 上的全部代码:
这是我的错误,因为我的投影模型中有一个列表,并且自动创建了另一个 table,因为你没有列表。我感到困惑,因为创建的名称 table 与我之前删除的名称相同。