Hibernate не создает таблицу соединений - PullRequest
0 голосов
/ 21 октября 2018

Я столкнулся с проблемой, которая никогда не случалась со мной раньше.У меня ManyToMany отношение, и Hibernate не создает таблицу соединений.Он создает только таблицы сущностей.Я использую SpringDataJpa с MySQL.

Доктор сущность:

Entity
@Table(name = "doctors")
public class Doctor {
  @Id
  @Size(min = 11, max = 11)
  @NotNull
  private String pesel;

  @NotNull
  private String firstName;

  @NotNull
  private String lastName;

  private Long salary;

  @NotNull
  private String speciality;

  @OneToOne
  private Doctor supervisor;

  @ManyToMany
  @JoinTable(name = "doctors_treatments",
          joinColumns = @JoinColumn(name = "pesel", referencedColumnName = "pesel"),
          inverseJoinColumns = @JoinColumn(name = "treatment_id", referencedColumnName = "id"))
  private Set<Treatment> treatments;
}

Объект обработки:

@Table(name = "treatments")
public class Treatment {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  @NotNull
  private String name;

  private Long cost;

  @ManyToMany(mappedBy = "treatments")
  private Set<Doctor> doctors; 
}

application.properties :

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:33061/sys

StackTrace:

  org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement
    ...
    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'sys.doctors_treatments' doesn't exist

Есть идеи, что может быть причиной?

1 Ответ

0 голосов
/ 21 октября 2018

Оказывается, что Hibernate не создал таблицу соединений из-за Doctors , первичный ключ которого расширяет допустимый размер.Однако он смог создать таблицу Doctors в одиночку.Поэтому, чтобы исправить это, мне пришлось ограничить размер идентификатора.Я изменил Врачи идентификатор, как это:

@Id
@Column(length = 11)
@NotNull
private String pesel;

И теперь таблица соединения может быть создана с помощью Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...