только изучаю эту связку, поэтому могу наговорить ляпов — заранее прошу отнестись с пониманием.
по англоязычной сети ходит слушок, что как ни вертись, динамически создать таблицу (то есть если нету) в базе на основе дескриптора hibernate-мэппинга (smth.hbm.xml) для PostgreSQL не получится.
я разбираюсь с
вот этим великолепным туториалом, но поскольку тут про все понемногу — я на предыдущей главе про JDBC, но уже с наличием hibernate-дескрипторов

. чаще всего занимаюсь конечно копи/пэйстом, но обнаруживаю за собой, что все-таки осознаю, что делаю — так что в идеале все должно работать

. и конечно там ни слова о Postgres.
проблема в том, что таблица при отустствии создается, но sequence пристроить никак не получается. простейщая фича типа
<id name="bookID" type="java.lang.Long">
<meta attribute="default-value">nextval('book_id_seq'::regclass)</meta>
<column name="id" />
<generator class="sequence" >
<param name="sequence">book_id_seq</param>
</generator>
</id>
не прокатывает — сам sequence в базе создается, но при попытке insert (поле, поле, поле) пишет, что пытаюсь впихнуть null в непозволительное для этого поле айдишника.
имеет ли вообще смысл с этим париться — может забить и просто создавать таблицу ручками (что, конечно, не красиво, но для моего проекта прокатит)?
на всякий случай, applicationContext:
<bean id="hibernateDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>org.postgresql.Driver</value>
</property>
<property name="url">
<value>jdbc:postgresql://localhost:5432/***</value>
</property>
<property name="username">
<value>****</value>
</property>
<property name="password">
<value>****</value>
</property>
</bean>
<bean id="hibernateSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.connection.pool_size">5</prop>
<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">false</prop>
</props>
</property>
<property name="dataSource">
<ref local="hibernateDataSource" />
</property>
<property name="mappingResources">
<list>
<value>***/springtest/hibernate/Book.hbm.xml</value>
.....
</list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="hibernateDataSource"/>
</property>
</bean>
<bean id="bookManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<bean class="***.springtest.bl.BookManager">
<property name="dataSource">
<ref local="hibernateDataSource"/>
</property>
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
почитал правила составления вопросов, понял что выразил вопрос несколько туманно, поэтому хочу уточнить некоторые вещи:
0) сам вопрос: "я делал все что мог и следовал даже не одному туториалу, а нескольким: что нужно сделать с моим дескриптором, чтобы сгенерировать рабочую таблицу с sequence'ом". конкретнее — пп. б. и в

. естественно, я мог где-то ошибиться — в чем и вопрос

.
он не требует помощи, а просто просит отозваться, если есть возможность.
а) google в инфе по запросу
"hibernate postgreSQL sequence" либо говорит, что если я сделаю так как сделал (см. выше book.hbm.xml, описание колонки id) — все будет прекрасно, либо молчит в тряпочку. инфы по связке не особо много.
б) по этому дескриптору создается следующая таблица (все выполняющиеся sql-команды отвечают только за select/insert/update):
create table "public"."book"(
"id" int8 PRIMARY KEY not null,
"title" varchar(255) not null,
"author" varchar(255) not null,
"borrowed" bool not null)
в) а хотелось бы — вот такую:
create table "public"."book"(
"id" serial PRIMARY KEY default 'nextval('book_iq_seq'::regclass)' not null,
"title" varchar(255) not null,
"author" varchar(255) not null,
"borrowed" bool not null)
пункт о трате времени на большой пост еще вначале постарался исправить сабжем.
спасибо, ребята. вопрос решился, когда наткнулся на
вот этот тред на javable.com.
для тех, у кого возникли схожие проблемы, привожу нужный дескриптор:
<hibernate-mapping package="****.springtest">
<class name="****.springtest.Book" table="book" schema="public">
<!--
create table "public"."book"(
"id" bigserial PRIMARY KEY default 'nextval('book_id_seq1'::regclass)' not null,
"title" varchar(255) not null,
"author" varchar(255) not null,
"borrowed" bool not null)
-->
<id name="bookID" column="id" type="java.lang.Long">
<generator class="identity">
<param name="sequence">book_id_seq</param>
</generator>
</id>
<property name="bookTitle" type="java.lang.String">
<meta attribute="default-value">Undefined</meta>
<column name="title" not-null="true" unique="true" />
</property>
<property name="bookAuthor" type="java.lang.String">
<meta attribute="default-value">Undefined</meta>
<column name="author" not-null="true" />
</property>
<property name="isBorrowed" type="java.lang.Boolean">
<meta attribute="default-value">false</meta>
<column name="borrowed" not-null="true" />
</property>
</class>
</hibernate-mapping>
все работает на ура: таблица и sequence создаются сами и великолепно работают.