我正在使用Hibernate和SQLite數據庫。我有以下類:休眠插入單列表問題
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Authority {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int idAuthority;
(...)
然後,我有一個作者類,它擴展權限並添加4或5個字段。 當我試圖保存Author對象時,Hibernate會生成以下要求:
Hibernate: insert into Authority values ()
和SQLite不喜歡這樣。
如果我添加一個虛擬的字符串字段,如「私人字符串測試」,並在構造函數中設置此屬性,一切工作正常。
我是hibernate的新手,所以我不確定如何繼續。你有什麼主意嗎 ?
編輯:按照要求,Author類的映射:
@Entity
@Table(name="Authors")
@PrimaryKeyJoinColumn(name="idAuthority")
public class Author extends Authority {
@Column(name = "firstName")
protected String firstName;
@Column(name = "lastName")
protected String lastName;
@Column(name = "alias")
protected String alias;
(...)
}
編輯:作爲請求(之二),該插入的代碼:
public void save(Object data) {
currentSession.saveOrUpdate(data);
}
沒什麼特別.. 爲了給你更多可能的線索,下面是數據庫模式:
create table Authority (idAuthority integer, primary key (idAuthority))
create table Authors (alias varchar, firstName varchar,
lastName varchar, idAuthority bigint not null, primary key (idAuthority))
N.B. :在SQLite中,一個主鍵整數自動設置爲AUTO-INCREMENT。
引發的異常,這是一個:
java.sql.SQLException: near ")": syntax error
請求應該更像:插入管理局值(NULL)讓SQLite的做它的自動遞增,而不是這種怪異的「插入管理局值( )」。
編輯:這是SqlLite for Hibernate包定義的一個問題。我只是想用HSQLDB,它給了我一個正確的查詢:
insert into Authority (idAuthority) values (default)
(然後失敗過,但非常不同的原因:P)。
我不確定是否有解決這個問題的辦法......除了使用不同的數據庫。
粘貼作者的映射,所以我們可以看到它,謝謝 – ssedano
你能PLZ嘗試使'idAuthority'公共(類'Authority')? – Santosh
@Santosh:試過了,但沒有奏效。 – Raveline