2014-09-15 2 views
0

Я использую PostgreSQL и SQL PowerArchitect для разработки физического датамодели. Поскольку я использую Hibernate, который может напрямую сохранять объекты Java в базе данных, я думал о том, что я использую Java_Object как тип в SQL PowerArchitect. Когда я выполняю запрос, я получаю эту ошибку. Пожалуйста, дайте мне знать, действительно ли тип не существует в PostgreSQL или я ошибаюсь. Googling Я не могу найти много ссылок на тип данных.Ошибка PostgreSQL, тип Java_Object не существует

CREATE TABLE public.Product_Info (
       productinfoid VARCHAR NOT NULL DEFAULT nextval('public.product_info_productinfoid_seq'), 
       productbasic VARCHAR NOT NULL, 
       Product_Tags JAVA_OBJECT, 
       Product_Categories JAVA_OBJECT, 
       Product_Ship_Time JAVA_OBJECT, 
       CONSTRAINT productinfoid PRIMARY KEY (productinfoid, productbasic) 
) 

INFO 15-09 10:12:04,300 - sql statement failed: ERROR: type "java_object" does not exist 
+0

Я использую драйверы postgresql-9.3-1102.jdbc41. –

+0

'java_object' не является типом данных в Postgres (все типы данных описаны здесь: http://www.postgresql.org/docs/current/static/datatype.html). Почему вы хотите сохранить полный (сериализованный) объект как один столбец в базе данных. Это почти всегда плохая идея. –

ответ

1

При создании таблиц необходимо использовать типы столбцов, которые поддерживаются базы данных, например: CHAR, VARCHAR NUMERIC, BLOB, и т.д.

Hibernate заботится о the object type to database column type mapping.

Вы должны FKs для этих отношений:

  • Product_Tags,
  • Product_Categories

и, вероятно, DATE/TIME/TIMESTAMP для этого:

  • Product_Ship_Time

JAVA_OBJECT предназначен для хранения Java Class объектов, а не Java Object экземпляров!

Проверить org.hibernate.type.descriptor.sql.JdbcTypeJavaClassMappings:

jdbcJavaClassMappings.put(Class.class, Types.JAVA_OBJECT); 

Так этот тип будет полезен при выборке типа объекта класса из столбца базы данных (например, VARCHAR).

+0

Прошу прощения, я не понимаю вашу точку зрения. Мой вопрос в том, что Java_Object не поддерживается PostgresSQL? Я знаю, что спящий режим может позаботиться, но, сохранив объекты, он упростит некоторые из моих задач. –

+0

Ну, в SQL PowerArchitect есть опция. Таким образом, вопрос. –

+0

Проверьте обновленный ответ. –

Смежные вопросы