Для начала, я бы разобрался с классом psqlRow. Ужас, кровь из глаз.
0. Имя класса пишется с большой буквы, имя переменной - с маленькой.
1. Разберитесь с ломбоком. Не нужно аннотации лепить в неограниченно колличестве. Если вы объявили
Setter и
@Getter над классом, не нужно повторно их объявлять над переменной.
2. Используйте record для DTO, по возможности.
3. Не нужно, без необходимости добавлять "= null" к каждой переменной. Нулов вообще следует избегать.
4. Тут вот самое непонятное место:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long uid = null;
а. Почему uid, а не id, хотя даже в коде у вас setId? (другой какой-то класс?)
б. nullable = false, но при этом дополнительно uid = null (wtf?!)
в. @GeneratedValue, но при этом вы пытаетесь что-то в него засетить.
5. Скорее всего, проблема в том, что инсерт у вас такой:
insert into acman.accounts
(email, nickname, firstname) -- нет id
values
(?, ?, ?)
id предполагается будет установлен автоинкрементом силами самой БД (значение автоикремента, кстати, не имеет отношения к уже заполненным данным), и там либо ничего не заполняется (например, потому, что при создании таблицы не объявлен автоинкремент на поле), либо заполняется, чем-то, что не соответствует правилам секционирования.