我是Hibernate框架的初學者,現在我在一個項目中集成了Spring和Hibernate。 我跑它確定,但它有我不明白爲什麼。問題是:在Hibernate中向數據庫添加字符串數組
我bean類在這裏描述下:
@Entity
@Table(name = "Sample")
public class Sample {
private int id;
private String firstName;
private String lastName;
private String sex;
private String[] interests;
@Id
@GeneratedValue
@Column(name = "id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "firstName")
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Column(name = "lastName")
public String getLastName() {
return lastName;
}
public void setSex(String sex) {
this.sex = sex;
}
@Column(name = "sex")
public String getSex() {
return sex;
}
public void setInterests(String[] interests) {
this.interests = interests;
}
@Column(name = "interests")
public String[] getInterests() {
return interests;
}
}
在這個類,你看,我有興趣領域是字符串數組這表明許多複選框。
在DAO中,當控制器調用將對象保存到數據庫時,我只是在Spring中使用hibernateTemplate.saveOrUpdate(sample)
類來堅持對象。
如果數據庫使用默認字符集,沒問題,運行並沒有任何錯誤,但是當我在數據庫系統中選擇表時,它顯示出一個不可讀的字符串,它類似於¬í ur [Ljava.lang.String;ÒVçé{G xp t Quidditcht Herbology
。我認爲這是'佔位符',當我想讀取並填充對象時,Hibernate給它分割。
但問題是,如果數據庫系統使用UTF8字符集,它不能運行,並拋出類似的異常Incorrect string value: '\xAC\xED\x00\x05ur...' for column 'interests' at row 1
我想是因爲該字符串不與UTF8字符集數據庫支持。
對此有何想法?
謝謝!
正如你所說,我堅持在interest數組上調用toString的結果,爲什麼Hibernate在讀取它時會清楚地讀取它,儘管它是一個不可讀的字符串? 如果我改變getInterests返回一個格式化的字符串,可以讓Hibernate讀回來嗎?我需要改變setInterests和split嗎? –
現在我改變了'public String getInterests(){// code here}',並且我收到一條錯誤消息,你知道,因爲屬性是數組,get方法的返回需要是一個字符串數組。 –
關於你的第一個選擇? –