我陷入了1個問題。在我的項目中,getter和setter是STRING類型的,而對應列的SQL定義是UniqueIdentifier,它工作正常。例如:將字符串保存爲PostgreSQL中的UUID
@Column(name="name")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
但是,當我們開始對PostgreSQL數據庫的支持,我們遷移所有表與定義UUID作爲列類型,其中它會引發錯誤
我想保存字符改變爲UUID要麼投它或更改列類型。
錯誤:
造成的:org.postgresql.util.PSQLException:ERROR:列「UID」的類型UUID的,但表達的類型字符改變 提示的:你需要重寫或投表達方式。
我知道我必須將getter/setter更改爲java.util.UUID類型的解決方案,但我們無法採用此解決方案,因爲它需要在整個工作區中更改所有getter和setter更改。
我嘗試瞭解決方案: HERE 它說,我可以UUID保存爲字符串(DB列型),但沒有解釋如何字符串保存爲UUID(DB列型)
我在實體嘗試這個類:
@Entity
@Table(name="emptest4")
public class Employee {
@Id
@Column(name="uid", columnDefinition = "UUID")
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String uid;
和在hibernate.cfg.xml:
<property name="hbm2ddl.auto">create</property>
SO它創建表自動盟友。我觀察到的表創建是這樣的:
CREATE TABLE public.emptest4
(
uid uuid NOT NULL,
name character varying(255),
CONSTRAINT emptest4_pkey PRIMARY KEY (uid)
)
但錯誤是相同:(
任何幫助會感激
您可以指定的Hibernate的版本? – sibnick
它的休眠5.2.0 – JavaDeveloper