База данных неверно отражает данные по user_id
Доброго времени суток. Прошу помочь разобраться в вопросе правильно ли работает БД и приложение. У меня мало опыта в этом. Благодарю, за уделенное время.
У меня есть 2 таблицы users и их meals, которые связаны foreign key user_id
DROP TABLE IF EXISTS meals;
CREATE TABLE meals
(
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
user_id INTEGER NOT NULL,
date_time TIMESTAMP DEFAULT now() NOT NULL,
description VARCHAR NOT NULL,
calories INTEGER DEFAULT 1000 NOT NULL,
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE
);
CREATE UNIQUE INDEX meals_unique_datetime_isx ON meals (date_time);
insert into meals (user_id, date_time, description, calories) values (100000, '2020-12-19 10:07:04', 'Breakfast', 416);
insert into meals (user_id, date_time, description, calories) values (100001, '2021-07-11 06:51:10', 'Breakfast', 2128);
insert into meals (user_id, date_time, description, calories) values (100000, '2020-11-12 05:31:33', 'Afternoon snack', 1084);
insert into meals (user_id, date_time, description, calories) values (100000, '2021-04-15 07:37:50', 'Afternoon snack', 1907);
insert into meals (user_id, date_time, description, calories) values (100000, '2021-03-12 10:28:08', 'Breakfast', 637);
insert into meals (user_id, date_time, description, calories) values (100001, '2021-04-27 17:25:54', 'Lunch', 1021);
insert into meals (user_id, date_time, description, calories) values (100001, '2020-11-06 20:52:52', 'Afternoon snack', 1016);
DROP TABLE IF EXISTS user_roles;
DROP TABLE IF EXISTS users;
DROP SEQUENCE IF EXISTS global_seq;
CREATE SEQUENCE global_seq START WITH 100000;
CREATE TABLE users
(
id INTEGER PRIMARY KEY DEFAULT nextval('global_seq'),
name VARCHAR NOT NULL,
email VARCHAR NOT NULL,
password VARCHAR NOT NULL,
registered TIMESTAMP DEFAULT now() NOT NULL,
enabled BOOL DEFAULT TRUE NOT NULL,
calories_per_day INTEGER DEFAULT 2000 NOT NULL
);
CREATE UNIQUE INDEX users_unique_email_idx ON users (email);
CREATE TABLE user_roles
(
user_id INTEGER NOT NULL,
role VARCHAR,
CONSTRAINT user_roles_idx UNIQUE (user_id, role),
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE
);
На главной странице есть выбор пользователя - вот фрагмент этой html страницы
<form method="post" action="users">
<b style="font-size: large">Meals of </b>
<select name="userId">
<option value="100000">User</option>
<option value="100001">Admin</option>
</select>
<button type="submit">Select</button>
</form>
Но когда я выбираю user у меня выводится список для admin, а для admin`a наоборот userские meals. Интересует, почему это происходит? В Сервлет приходит пост-запрос с парметром userId, который сетится в SecurutyUtil
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int userId = Integer.parseInt(request.getParameter("userId"));
SecurityUtil.setAuthUserId(userId);
response.sendRedirect("meals");
}
public class SecurityUtil {
private static int id = AbstractBaseEntity.START_SEQ;
public static int authUserId() {
return id;
}
public static void setAuthUserId(int id) {
SecurityUtil.id = id;
}
По умолчанию в AbstractBaseEntity id обычного User`a
public static final int START_SEQ = 100000;