У меня есть следующий объект с расчетной областью isIdle
:результатов Hibernate @Formula в org.hibernate.HibernateException: Отсутствует колонок
@Entity
@Table(name = Customer.TABLE)
public class Customer {
// ...
@JsonIgnore
private static final String IS_IDLE_SQL =
"CASE WHEN (trunc(extract(epoch from now())) - coalesce(last_user_login_time,0) " +
"> 5 * 24 * 3600) THEN 1 ELSE 0 END";
@Formula(IS_IDLE_SQL)
private Integer isIdle;
public Integer getIsIdle() {
return isIdle;
}
public void setIsIdle(Integer isIdle) {
this.isIdle = isIdle;
}
}
Поле должно быть 0, если last_user_login_time
содержит UNIX временной метку, которая в последнее 5 дней и 1 в противном случае.
Как подсчитано, у меня нет соответствующей колонки в моей таблице БД. Когда я раскрываю мое приложение, я получаю следующее сообщение об ошибке:
org.hibernate.HibernateException: Missing column: isIdle in public.customer
at org.hibernate.mapping.Table.validateColumns(Table.java:366)
Почему Hibernate попытаться найти столбец для этого вычисляемого поля? База данных использует PostgreSQL.