當我在生成「create table」sql時遇到了hibernate映射的問題。 屬性sid是字符串類型,但是在數據庫中生成表acl_entry後它變爲整數類型。我不知道爲什麼。這導致了這樣的錯誤:hibernate postgres多對一映射問題
org.postgresql.util.PSQLException: ERROR: insert or update on table "acl_entry"
violates foreign key constraint "id"
Detail: Key (sid)=(0) is not present in table "acl_sid".
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryEx
ecutorImpl.java:2157).
任何幫助表示讚賞。
這裏是我的代碼:
AclEntry.java:
@Id
@SequenceGenerator(name="aclentry_identifier_seq", sequenceName="aclentry_identifier_seq", allocationSize=1)
@GeneratedValue(strategy = GenerationType.AUTO, generator="aclentry_identifier_seq")
@Column(name = "id", insertable=false, updatable=false)
private Integer id;
@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "sid", nullable = false)
@ForeignKey(name = "id")
private AclSid aclSid;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
AclSid.java:
@Id
@SequenceGenerator(name="aclsid_identifier_seq", sequenceName="aclsid_identifier_seq", allocationSize=1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="aclsid_identifier_seq")
@Column(name = "id", insertable=false, updatable=false)
private Integer id;
@Column(name = "sid")
private String sid;
public Integer getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
我的問題是:產生的ACL_ENTRY後,其場 「SID」 是如預期的那樣,整數類型不是字符串。這導致生成後的密鑰(sid)=(0)。
mask integer,
acl_object_identity integer,
sid integer NOT NULL
感謝閱讀:
表ACL_ENTRY作爲生成。
你的'@ ForeignKey'表明你引用'id'列,而不是' sid',這是一個整數。 –