У меня есть @Entity
, который сопоставляется с представлением, вот как это выглядит
import org.hibernate.annotations.Immutable;
import javax.persistence.*;
@Table(name = "user_earning")
@Entity
@Immutable
public class UserFlightEarning {
@Id public Long userId;
public Long flightId;
@Column(name = "flight_seq") public Long flightSequence;
}
Это отлично работает, я могу получить записи из представления с помощью dao. Однако я заметил в журналах, что Hibernate на самом деле пытается создать таблицу, но терпит неудачу, потому что она уже существует.
2015-11-12 21:56:34.841 ОШИБКА 4204 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport: HHH000389: Неудачно: создать таблицу user_profile (user_id bigint не null, avg_airtime integer, avg_fuel_points integer , целое число avg_miles, адрес электронной почты varchar(255), имя varchar(255), целое число_рейсов, целое число_дальних_перелетов, varchar_фамилии(255), целое число длиннейших_перелетов, varchar_самого_посещенного_города(255), целое_конец_уровня, целое_начало_уровня, первичный ключ (user_id)) 2015 -11-12 21:56:34.841 ОШИБКА 4204 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport: таблица «user_profile» уже существует
Могу ли я настроить спящий режим, чтобы он пропускал создание таких объектов? Я думал, что аннотация @Immutable
говорит Hibernate пропустить создание, но кажется, что эта аннотация предназначена только для предотвращения грубых операций с таблицей.
@Subselect
queryWHERE
? или дао будет достаточно? Я не совсем уверен, когда будет использоваться оператор внутри аннотации подвыборки. 14.11.2015SELECT ... FROM table
заменяется наSELECT ... FROM (select * from user_earning)
14.11.2015@Subselect
. :( 26.02.2017