Ваш код не завершен, поэтому трудно быть уверенным, но я подозреваю, что вы в основном делаете это:
Location locat = new Location();
List<Location> locations = ...;
for (int j = 0; j < coordinate.length; j++) {
// ...
locat.setCoordinate(loc);
locations.add(locat);
}
В Java добавление объекта в список не приводит к копированию объекта в список. В списке просто хранится ссылка на ваш объект. Таким образом, на каждой итерации вы перезаписываете то, что хранили в объекте на предыдущей итерации, и добавляете новую ссылку на тот же объект в списке. В конце список содержит N ссылок на один и тот же объект.
Таким образом, когда хранилище данных сохраняет список в базе данных, оно замечает, что список содержит один и тот же объект, дублированный n раз, и сохраняет объект только один раз.
Таким образом, вы должны создавать новый объект местоположения на каждой итерации:
List<Location> locations = ...;
for (int j = 0; j < coordinate.length; j++) {
// ...
Location locat = new Location();
locat.setCoordinate(loc);
locations.add(locat);
}