Java SQL H2: как получить автоматически увеличиваемый идентификатор из моего DAO?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java SQL H2: как получить автоматически увеличиваемый идентификатор из моего DAO?

Сообщение Anonymous »

У меня возникли проблемы с автоматическим увеличением столбцов в моем приложении Java (с использованием H2). В основном я не могу найти лучший способ получить доступ к идентификатору из моего DAO:
Соответствующие разделы кода:
У меня есть таблица PEOPLE с моим столбец с автоматическим увеличением ID и столбец String NAME:

Код: Выделить всё

create table PEOPLE (
ID INTEGER auto_increment,
NAME CHARACTER VARYING(50)
);

PeopleDAO.java

Код: Выделить всё

public class PeopleDAO {
public static ObservableList getPeople() throws SQLException, ClassNotFoundException {
String sql = "SELECT * FROM PEOPLE";
try {
PreparedStatement statement = getConnection().prepareStatement(sql);
ResultSet rs = DBHelpers.executeQuerry(statement);
return getPeopleList(rs);
} catch (SQLException e {
throw e
}
}

public static ObservableList getPeopleList(ResultSet rs) throws SQLException, ClassNotFoundException {
ObservableList peopleList = FXCollections.observableArrayList();
while (rs.next()) {
Person person = new Person(
rs.getString("NAME");
peopleList.add(person);
}
return peopleList;
}

public static void insertPerson(String name) throws SQLException, ClassNotFoundException {
String sql = "INSERT INTO PEOPLE (NAME) VALUES (?)";
try {
PreparedStatement statement = getConnection().prepareStatement(sql);
statement.setString(1, name);
DBHelpers.executeUpdate(statement);
} catch (SQLException | ClassNotFoundException e) {
throw e;
}
}
}
DBHelpers.java
Это мой драйвер, URL-адрес, соединение и т. д. getConnection() возвращает объект Connection и выполнениеQuery( ) и exeucteUpdate() делают то, что говорят (statement.executeQuery() и Statement.executeUpdate() соответственно)
Person.java

Код: Выделить всё

public class Person {
String name;

public Person(String name) {
this.name = name;
}
}
Мой вопрос: как мне получить доступ к столбцу ID из объекта Person? Я попробовал добавить поле

Код: Выделить всё

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
int ID;
к Person и создаю для него метод получения, но он возвращает 0, а не 1 для первого объекта, что, я думаю, связано с тем, что он является нулевым индексированный список объектов. Если бы это был неинкрементный столбец, я бы просто добавил идентификатор при создании объектов Person в getPeopleList(), но поскольку идентификаторы назначаются автоматически, я не знаю, как это сделать.
При необходимости я могу опубликовать больше своего кода.

Подробнее здесь: https://stackoverflow.com/questions/783 ... rom-my-dao
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»