У меня есть приложение Spring Boot CRUD, которое работает, если я использую обычные MySQL таблицы. Но мне нужно отобразить данные из нескольких таблиц, поэтому я создал представление MySQL. Но теперь появляется следующая ошибка:
Ошибка создания компонента с именем entityManagerFactory, определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]: вызов init метод не удался; вложенное исключение: org.hibernate.AnnotationException: для сущности не указан идентификатор: net .tekknow.medaverter.domain.AppointmentView
Я следовал этому примеру: https://www.javabullets.com/calling-database-views-from-spring-data-jpa/
Вот объект домена:
package net.tekknow.medaverter.domain;
import java.io.Serializable;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.Size;
@Entity
@Table(name = "vw_appointments")
public class AppointmentView implements Serializable {
@Size(max = 32)
@Column(name="Date")
public String date;
@Column(name="Physician")
public String physician;
@Column(name="LabCollected")
public Timestamp labCollected;
@Column(name="Note")
public String note;
public String getDate_time() {
return date;
}
public String getPhysician() {
return physician;
}
public Timestamp getDatetime_collected() {
return labCollected;
}
public String getNote() {
return note;
}
}
Вот запрос mysql представления, просто чтобы показать вам, что он работает:
mysql> выберите * из vw_appointments; + ------------ + ------------- + --------------------- + ------------------- + | Дата | Врач | LabCollected | Примечание | + ------------ + ------------- + --------------------- + ------------------- + | 29.10.2010 | Кэмпбелл, J | 2010-10-29 11:09:00 | нет доступных заметок | + ------------ + ------------- + --------------------- + ------------------- + 1 строка в наборе (0.02 se c)
Вот код услуги:
@Service
@Transactional
public class AppointmentViewService {
@Autowired
AppointmentViewRepository repo;
public List<AppointmentView> listAll() {
return repo.findAll();
}
}
Вот код репозитория:
public interface AppointmentViewRepository extends JpaRepository<AppointmentView,Integer> {}
Разве Hibernate не обрабатывает представления? Предложения