【发布时间】:2016-07-18 11:24:59
【问题描述】:
我想使用 Hibernate 在 Postgres 9 上执行 CRUD 操作。
实体:
@Entity
@Table(name = "MESSAGE_HISTORY_RECORD")
public class MessageHistoryRecord {
@EmbeddedId
private MessageCompoundKey compoundKey;
@Column
private String responseChannel;
@ElementCollection
private List<Trace> traces;
@Column
private byte[] payload;
//getters and setters
}
复合 ID 实体:
@Embeddable
public class MessageCompoundKey implements Serializable {
private static final long serialVersionUID = 9084329307727034214L;
@Column
private String correlatedMsgId;
@Column
private String messageId;
@Column
private String endpointId;
//getters and setters
}
ElementCollection 实体:
@Embeddable
public class Trace implements Serializable{
private static final long serialVersionUID = 9084329307727034214L;
private Long timestamp;
private String description;
//getters and setters
}
我正在使用hibernate.hbm2ddl.auto=update 为我创建架构。
它为我创建了表格:
CREATE TABLE "public"."message_history_record"
(
correlatedmsgid varchar(255) NOT NULL,
endpointid varchar(255) NOT NULL,
messageid varchar(255) NOT NULL,
payload bytea,
responsechannel varchar(255),
CONSTRAINT message_history_record_pkey PRIMARY KEY (correlatedmsgid,endpointid,messageid)
)
;
CREATE UNIQUE INDEX message_history_record_pkey ON "public"."message_history_record"
(
correlatedmsgid,
endpointid,
messageid
)
;
CREATE TABLE "public"."messagehistoryrecord_traces"
(
messagehistoryrecord_correlatedmsgid varchar(255) NOT NULL,
messagehistoryrecord_endpointid varchar(255) NOT NULL,
messagehistoryrecord_messageid varchar(255) NOT NULL,
description varchar(255),
timestamp bigint
)
在持久化任何对象时,我在messagehistoryrecord_traces 表中没有找到任何条目。
休眠属性:
hibernate.connection.driver_class=org.postgresql.Driver
hibernate.connection.url=jdbc:postgresql://192.xx.xx.xx:5432/testdb
hibernate.connection.username=***
hibernate.connection.password=****
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.pool_size=10
hibernate.show_sql=true
hibernate.hbm2ddl.auto=update
坚持sql:
Hibernate:插入 MESSAGE_HISTORY_RECORD(payload、responseChannel、relatedMsgId、endpointId、messageId)值(?、?、?、?、?)
【问题讨论】: