Я читаю из файла и пытаюсь сохранить все данные, используя jpa, в mysql db. Мой метод readandLoad выглядит следующим образом:
@Service
public class ReadLoadLog {
@Autowired
private LogbeanRepository logbeanRepository;
public void readFile(LogBean logBean) throws IOException {
Scanner read = new Scanner(
new File(
"/src/main/resources/access.txt"));
while (read.hasNext()) { //checks if there is a valid token
String string = read.nextLine();
System.out.println(string);
Scanner readFileByLine = new Scanner(string);
while (readFileByLine.hasNext()) { //checks valid token if not then goes out of loop
String[] split = readFileByLine.nextLine().split("\\|");
logBean.setDateTime(LocalDateTime.parse(split[0], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")));
logBean.setIp_address(split[1]);
logBean.setRequest(split[2]);
logBean.setStatus(split[3]);
logBean.setUserAgent(split[4]);
}
logbeanRepository.save(logBean);
}
}
}
Я запускаю это с помощью весенней загрузки с помощью команды LineRunner (). У меня естьСвойства mysql объявлены в app.properties в моей базе данных. Я получаю только три новых идентификатора, но у меня есть более тысячи данных, когда я нажимаю на кнопку «Выполнить выборку из таблицы» в моей рабочей среде mysql, я получаю разные данные, но эти три идентификатора 1,2,3, поэтомуКажется, что данные загружаются в БД, но теперь расположены в соответствии с первичным ключом, который я установил
'1', '2017-01-01 18:25:55', '192.168.97.208', '\"GET / HTTP/1.1\"', '200', '\"Mozilla/5.0 (Linux; Android 7.0; Moto G (4) Build/NPJS25.93-14-8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.116 Mobile Safari/537.36\"'
'2', '2017-01-01 18:01:27', '192.168.45.70', '\"GET / HTTP/1.1\"', '200', '\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0\"'
'3', '2017-01-01 09:41:38', '192.168.87.47', '\"GET / HTTP/1.1\"', '200', '\"Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36\"'
@Entity
public class LogBean {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private LocalDateTime dateTime;
private String ip_address;
private String request;
private String status;
private String userAgent;
Это мой основной класс
@SpringBootApplication
public class ParserprojectApplication implements CommandLineRunner {
@Autowired
LogbeanRepository logbeanRepository;
@Autowired
ReadLoadLog readLoadLog;
private Logger LOGGER = LogManager.getLogger();
public static void main(String[] args) {
SpringApplication.run(ParserprojectApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
LOGGER.debug("run(args)", args);
LogBean logBean = new LogBean();
readLoadLog.readFile(logBean);
}
Я хочу получить все считанные данныепоэтому я должен получить более тысячи данных с уникальным первичным ключом, вместо этого я получаю данные, но они все, 1,2,3 ключа