Удаление отношения один к одному - PullRequest
0 голосов
/ 05 мая 2019

У меня есть две таблицы: пациент и назначение. Пациент может иметь много приемов. Когда я иду, чтобы удалить пациента из спящего режима таблицы пациентов, я говорю, что таблица назначений не существует. Любая помощь будет оценена.

Настройка отношений в классе пациента

            targetEntity = Appointment.class,
            cascade = CascadeType.ALL,
            orphanRemoval = true
    )
    private Set<Appointment> appointmentset = new HashSet<Appointment>();

Отношение много к одному в классе пациентов

   @ManyToOne
    @JoinColumn(name = "Patient_Id")
    private Patient patient;

Удалить метод пациента

  public void deletePatient2(Integer id){
        Session session = factory.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            TypedQuery query = session.getNamedQuery("deletePatient");
            query.setParameter("id", id);
            query.executeUpdate();
        }catch (HibernateException e){
            e.printStackTrace();
            if (tx != null) tx.rollback();
        }
        session.flush();
        tx.commit();
    }

Удалить именованный запрос пациента

 @NamedQuery(
                        name = "deletePatient",
                        query = "delete from Patient p where p.id = :id"
                )
May 05, 2019 10:13:07 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1146, SQLState: 42S02
May 05, 2019 10:13:07 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Table 'KYMb02vi2Z.Patient_Appointment' doesn't exist
org.hibernate.exception.SQLGrammarException: could not execute statement
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63)
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178)
    at org.hibernate.hql.internal.ast.exec.BasicExecutor.doExecute(BasicExecutor.java:100)
    at org.hibernate.hql.internal.ast.exec.DeleteExecutor.execute(DeleteExecutor.java:105)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:454)
    at org.hibernate.engine.query.spi.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:382)
    at org.hibernate.internal.SessionImpl.executeUpdate(SessionImpl.java:1562)
    at org.hibernate.query.internal.AbstractProducedQuery.doExecuteUpdate(AbstractProducedQuery.java:1641)
    at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1618)
    at SessionManager.deletePatient2(SessionManager.java:1393)

Ошибка стека. Таблица в классе встреч назначается для того, чтобы называться встречей

@Entity
@Table(name = "Appointment")
public class Appointment

Но по какой-то причине он ищет таблицу с именем Patient_Appointment, даже когда я переименовываю таблицу, она все еще выдает ошибки и просто добавляет еще одного Patient_ в начале

Переназначено OneToMany в классе пациента

 @OneToMany(
            targetEntity = Appointment.class,
            cascade = CascadeType.ALL,
            orphanRemoval = true
    )
 private List<Appointment> appointments = new ArrayList<Appointment>();
    public void addAppointment(Appointment appointment){
        appointments.add(appointment);
        appointment.setPatient(this);
    }

    public void removeAppointment(Appointment appointment){
        appointments.remove(appointment);
        appointment.setPatient(null);
    }

Раствор

  @OneToMany(
            mappedBy = "patient",
            targetEntity = Appointment.class,
            cascade = CascadeType.ALL,
            orphanRemoval = true
    )

Добавлен mappedBy

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