PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để làm cho Java và Postgres enums hoạt động cùng nhau để cập nhật?

Theo quan điểm của JDBC, chỉ cần coi enum PostgreSQL như một chuỗi.

Trích dẫn blog Chuyển đổi giữa các enums Java và PostgreSQL enums:

PostgreSQL cho phép bạn tạo các kiểu enum bằng cú pháp sau:

CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');

Giờ đây, bạn có thể sử dụng 'động vật' làm kiểu dữ liệu trong bảng của mình, ví dụ:

create table pet (                         
    pet_id        integer         not null,
    pet_type      animal_type     not null,
    name          varchar(20)     not null
);

Trong Java, bạn sẽ có một kiểu enum tương ứng:

public enum AnimalType {
    DOG,
    CAT,
    SQUIRREL;
}

Chuyển đổi giữa Java và PostgreSQL enums rất đơn giản. Ví dụ:để chèn hoặc cập nhật một trường enum, bạn có thể sử dụng cú pháp CAST trong SQL PreparedStatement:

INSERT INTO pet (pet_id, pet_type, name) VALUES (?, CAST(? AS animal_type), ?);

--or

INSERT INTO pet (pet_id, pet_type, name) VALUES (?, ?::animal_type, ?);

Postgres cũng sẽ cho phép bạn chèn / cập nhật một enum chỉ bằng cách chuyển giá trị của nó dưới dạng một chuỗi.

Dù ép kiểu hay không thì bên Java cũng vậy. Bạn sẽ đặt các trường như sau:

stmt.setInt(1, 1);
stmt.setString(2, AnimalType.DOG.toString());
stmt.setString(3, 'Rex');

Truy xuất enum từ một câu lệnh SELECT có dạng như sau:

AnimalType.valueOf(stmt.getString("pet_type"));

Hãy lưu ý rằng enums có phân biệt chữ hoa chữ thường, vì vậy bất kỳ trường hợp nào không trùng khớp giữa enums Postgres của bạn và enums Java sẽ phải được tính đến. Cũng lưu ý rằng kiểu enum PostgreSQL là SQL không chuẩn và do đó không di động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MigrationSchemaMissing (Không thể tạo bảng django_migrations (% s)% exc)

  2. Cách sao lưu và khôi phục cơ sở dữ liệu PostgreSQL

  3. LOWER () - Chuyển đổi sang chữ thường trong PostgreSQL

  4. Để bỏ qua các khóa trùng lặp trong quá trình 'sao chép từ' trong postgresql

  5. Làm thế nào để cài đặt im lặng Postgresql trong Ubuntu qua. Dockerfile?