問題描述: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" }))