Hibernate自動創建數據庫表無法創建到登錄用戶空間而是創建到System空間

問題描述:Hibernate自動創建數據庫表無法創建到登錄用戶空間而是創建到System空間

登錄用戶:penw

最近項目開展二期,數據庫需要由Mysql轉移到Oracle,因此需重構實體類來實現hibernate自動創建表格功能。

簡單的舉個例子,用戶、角色、權限、以及他們之間的中間表:

//用戶實體類
@Entity
@Table(name="acc_user")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -5334753290712300510L;
	.....//省略其他屬性及set、get方法
	//用戶角色中間表 acc_user_role
	@ManyToMany(targetEntity = Role.class, cascade = { CascadeType.PERSIST,
			CascadeType.MERGE })
	@JoinTable(name = "ACC_USER_ROLE", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") }, uniqueConstraints = @UniqueConstraint(columnNames = {
			"user_id", "role_id" }))

//角色實體類
@Entity
@Table(name="acc_role")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Role implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -643373952721531933L;
	.....//省略其他屬性及set、get方法
	//角色權限中間表 acc_role_power
@ManyToMany(targetEntity = Power.class, cascade = { CascadeType.PERSIST,
CascadeType.MERGE })
@JoinTable(name = "ACC_ROLE_POWER", joinColumns = { @JoinColumn(name = "role_id") }, inverseJoinColumns = { @JoinColumn(name = "power_id") }, uniqueConstraints = @UniqueConstraint(columnNames = {
"role_id", "power_id" }))


實體類編寫完畢,但是當我啓動服務器的時候,發現所有的表格都跑到System這個用戶表空間下面去了,而不再我指定的用戶下面,經檢查,發現Oracle和Mysql不一樣,需在註解裏面添加schema="penw"來指定空間,所以添加之後,順利解決問題。

代碼如下:

//用戶實體類
@Entity
@Table(name="acc_user",schema="penw")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -5334753290712300510L;
	.....//省略其他屬性及set、get方法
	//用戶角色中間表 acc_user_role
	@ManyToMany(targetEntity = Role.class, cascade = { CascadeType.PERSIST,
			CascadeType.MERGE })
	@JoinTable(schema="penw",name = "ACC_USER_ROLE", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") }, uniqueConstraints = @UniqueConstraint(columnNames = {
			"user_id", "role_id" }))

//角色實體類
@Entity
@Table(name="acc_role",schema="penw")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Role implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -643373952721531933L;
	.....//省略其他屬性及set、get方法
	//角色權限中間表 acc_role_power
	@ManyToMany(targetEntity = Power.class, cascade = { CascadeType.PERSIST,
			CascadeType.MERGE })
	@JoinTable(schema="penw",name = "ACC_ROLE_POWER", joinColumns = { @JoinColumn(name = "role_id") }, inverseJoinColumns = { @JoinColumn(name = "power_id") }, uniqueConstraints = @UniqueConstraint(columnNames = {
			"role_id", "power_id" }))



發佈了53 篇原創文章 · 獲贊 3 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章