Настройка проста: есть пользователи и предметы. Пользователь может любить предметы. Далее есть ящики. У ящиков могут быть предметы.
Если я возьму один или несколько ящиков, я также хочу извлечь предметы из этого ящика. Однако, если в систему вошел пользователь, я также хотел бы предоставить свойство liked
, которое может определить, нравится ли пользователю элемент в данный момент.
Приведенный ниже код должен дать приблизительное представление. о том, как это будет выглядеть в приложении Spring Boot:
@Entity
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
@Entity
public class LikeEntity {
@ManyToOne
private UserEntity user;
@ManyToOne
private ItemEntity item;
}
@Entity
public class ItemEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
Кроме того, у нас есть Drawer
и DrawerItem
сущности, такие как:
@Entity
public class DrawerItemEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private DrawerEntity drawer
@ManyToOne
private ItemEntity item
}
@Entity
public class DrawerEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = drawer)
private List<DrawerItemEntity> drawerItems;
}
Для клиента I Вы хотите создать проекции, подобные этой, где DrawerItem
предоставляет информацию о том, нравится ли элементу currentUser, если он доступен, элементу или нет.
Проблема в том, что выражение SpEL для метода getLiked()
не будет работа:
public interface DrawerItem {
Item getItem();
@Value("#{currentUser != null ? currentUser.getLikes().contains(target)} : false")
Boolean getLiked();
}
public interface Drawer {
List<DrawerItem> getItems();
}
Я не знаю, возможно ли и как это возможно, и / или это хорошая идея в отношении производительности вычислений, но это то, что мне нужно. Прогнозы действительно ограничивают возможность подготовки данных для клиента, и для того, чтобы сделать их плохим выбором, кажется, требуется всего одна маленькая вещь. Я начинаю понимать, что только сейчас ..