Ввожу команду и она пишется в репозиторий, и в бд.
id: 1 name: ... time: ...
id: 2 name: ... time: ...
id: 3 name: ... time: ...
Далее, когда введенное время совпадает с текущим удаляю запись из репозитория и бд (например команда 1 и 2 удалена осталось только 3). Но теперь, когда я добавляю 4 и 5 команды, они ложатся вместо удаленных 1 и 2, а если 6 добавить, то она идет по порядку:
id: 5 name: ... time: ...
id: 4 name: ... time: ...
id: 3 name: ... time: ...
id: 6 name: ... time: ...
Вопрос, как сделать так чтобы, после удаления, следующая запись шла по порядку?
Контроллер
@Controller
public class NotificationController
{
@Autowired
private CommandRepository commandRepository;
@GetMapping("/")
public String command(Model model)
{
Iterable<Command> commands = commandRepository.findAll();
model.addAttribute("commands", commands);
return "command";
}
@PostMapping
public String add(@RequestParam String name,
@RequestParam String message,
@RequestParam String time,
@RequestParam String notificationType,
@RequestParam String extra_params,
Model model) throws ParseException {
Command command = new Command(name, message, time, notificationType, extra_params);
Date date = new Date();
if(Helper.checkParams(NotificationType.fromString(notificationType),extra_params) && Helper.getCorrect(time).after(date)) {
commandRepository.save(command);
}
else
{
command = null;
System.err.println("notification type and extra param don't coincide" +
" or the specified time has already passed");
}
Iterable<Command> commands = commandRepository.findAll();
model.addAttribute("commands", commands);
return "command";
}
}
Сущность
@Entity
@Table(name = "command")
public class Command {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "message")
private String message;
@Column(name = "time")
private Date time;
@Column(name = "notificationType")
@Enumerated(EnumType.STRING)
private NotificationType notificationType;
@Column(name = "extra_params")
private String extra_params;
Репозиторий
@Repository
public interface CommandRepository extends CrudRepository<Command, Long>
{
@Query("SELECT id FROM notification.entities.Command")
List<Long> findId(@Param("id") String id);
@Query("SELECT name FROM notification.entities.Command")
List<String> findName(@Param("name") String name);
@Query("SELECT message FROM notification.entities.Command")
List<String> findMessage(@Param("name") String message);
@Query("SELECT time FROM notification.entities.Command")
List<Date> findTime(@Param("time") String time);
@Query("SELECT notificationType FROM notification.entities.Command")
List<NotificationType> findType(@Param("notificationType") String type);
@Query("SELECT extra_params FROM notification.entities.Command")
List<String> findParam(@Param("extra_params") String param);
@Transactional
void deleteByTime(Date date);
}
Нужно отсортировать строки указав order by
В аннотации @Query
@Repository
public interface CommandRepository extends CrudRepository<Command, Long>
{
@Query("SELECT name FROM Command c order by c.id")
List<String> findName(@Param("name") String name);
}
Или передав Sort
в метод findAll
commandRepository.findAll(new Sort(Sort.Direction.ASC, "id"));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Допустим у меня есть байт, и в нем я хочу хранить 8 boolean'овКак мне читать и записывать отдельные биты в байт? Пожалуйста без битсета, я хочу понять...
Есть 2 блока которые на больших экранах нужно отобразить в один ряд с выравниванием содержимого по левому краю, а на маленьких в два ряда и с выравниванием...