Я хочу вставить данные с JDB C до PostgreSQL, и данные содержат массив самоопределяемого типа. Когда я пытаюсь вставить и получил ошибку.
Может кто-нибудь указать мне, где я делаю ошибку?
String query = "INSERT INTO fitness_club (club_id, club_brand, club_name, latitude, longitude, club_status, club_home_url, address, open_hour) VALUES(?, ?::fitness_brand, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement pst = conn.prepareStatement(query);
pst.setInt(1, firstClub.getClubId());
pst.setString(2, firstClub.getBrand().toString());
pst.setString(3, firstClub.getDescription());
pst.setDouble(4, firstClub.getLatitude());
pst.setDouble(5, firstClub.getLongitude());
pst.setInt(6, firstClub.getClubStatus());
pst.setString(7, firstClub.getClubHomeUrl());
pst.setString(8, firstClub.getAddress());
Array arrayOpenHour = conn.createArrayOf("open_hour", firstClub.getOpenHours().toArray());
pst.setArray(9, arrayOpenHour);
ResultSet saveRS = pst.executeQuery();
Это сообщение error
org.postgresql.util.PSQLException: ERROR: malformed record literal: "OpenHour@342c38f8"
Detail: Missing left parenthesis.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2510)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2245)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:311)
Тип самоопределения
public class OpenHour {
DayOfWeek day;
String time;
}
Таблица данных
create table fitness_club
(
club_uid uuid not null
constraint fitness_club_pkey
primary key,
club_brand fitness_brand not null,
club_id integer not null,
club_name varchar(500) not null,
latitude double precision not null,
longitude double precision not null,
club_status integer,
club_home_url varchar(500),
zip_code varchar(500),
address varchar(500),
city varchar(500),
state us_state,
open_hour open_hour[],
constraint brand_id_constrain
unique (club_brand, club_id)
);
create type open_hour as
(
day week_day,
hours varchar(50)
);
Тип самоопределения, используемый другим типом
create type week_day as enum ('MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY');