У меня есть следующий объект JPA под названием Offer
, который должен получить свое состояние published
из его содержимого ServiceItem
, которое также имеет атрибут published
(не формула).ServiceItem
published
- это BIT
в таблице базы данных.
@Entity
@Getter
@Setter
@NoArgsConstructor
public class Offer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne
private ServiceItem serviceItem;
@Formula("(select si.published from service_item si join offer o on si.id = o.service_item_id where o.id = id)")
private boolean published;
}
Приведенная выше формула всегда возвращает true для Offer
независимо от состояния published
ServiceItem
Это работает правильно, если я изменю формулу следующим образом:
@Formula("(select case when si.published = true then true else false end from service_item si join offer o on si.id = o.service_item_id where o.id = id)")
что не так?Это ошибка или ожидаемое поведение @Formula
s с логическими значениями?