2017-03-17 14 views
0

私は "User"という名前のエンティティを持っています。 Oracleはその名前の表を作成できないため、@Entity(name =)および@Table(name =)のプロパティーを作成して作成できるようにしました。しかし、何らかの理由でテーブルが作成されていません。奇妙なことをするために、定義されたすべての@JoinTableは、適切な名前で作成されます。誰でもこれを引き起こしている可能性のあるアイデアはありますか?HibernateはDB内に名前付きテーブルを作成していません

私のクラス:

@Entity(name="USERTABLE") 
@Table(name="USERTABLE") 
public class User implements Serializable { 
private static final long serialVersionUID = -3895959057511877608L; 

private Integer id; 
private String name; 
private String userName; 
private Domain domain; 
private String password; 
private Boolean mustChangePassword; 
private String email; 
// 19/07/2012 RP [WEAVER-83] 
private Date lastLogin; 
private List<Profile> profiles = new ArrayList<Profile>(); 
private List<Role> roles = new ArrayList<Role>(); 

@Id 
@GeneratedValue(generator="user_seq") 
@SequenceGenerator(name="user_seq",sequenceName="User_Sequence",allocationSize=1) 
public Integer getId() { 
    return id; 
} 

public void setId(Integer id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

@Column(unique = true) 
public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

@ManyToOne 
public Domain getDomain() { 
    return domain; 
} 

public void setDomain(Domain domain) { 
    this.domain = domain; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

@Column(columnDefinition = "tinyint") 
public Boolean getMustChangePassword() { 
    return mustChangePassword; 
} 

public void setMustChangePassword(Boolean mustChangePassword) { 
    this.mustChangePassword = mustChangePassword; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public Date getLastLogin() { 
    return lastLogin; 
} 

public void setLastLogin(Date lastLogin) { 
    this.lastLogin = lastLogin; 
} 

@ManyToMany 
@JoinTable(joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "profile_id") }) 
@IndexColumn(name = "listOrder") 
public List<Profile> getProfiles() { 
    return profiles; 
} 

public void setProfiles(List<Profile> profiles) { 
    this.profiles = profiles; 
} 

@ManyToMany 
@JoinTable(joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") }) 
@IndexColumn(name = "listOrder") 
public List<Role> getRoles() { 
    return roles; 
} 

public void setRoles(List<Role> roles) { 
    this.roles = roles; 
} 
} 

私のpersistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence 
    xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
    version="1.0"> 
    <persistence-unit name="weaver"> 
    <jta-data-source>java:/weaverDS</jta-data-source> 
    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
     <!-- <property name="hibernate.hbm2ddl.auto" value="update"/> --> 
     <property name="hibernate.hbm2ddl.auto" value="create"/> 
     <!-- http://www.jboss.com/index.html?module=bb&op=viewtopic&t=78806 --> 
     <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.DefaultComponentSafeNamingStrategy"/>   
    </properties> 
    </persistence-unit> 
</persistence> 

UPDATE:私はすべてのテーブルの先頭にプレフィックスを追加命名戦略を作成しようとしたが、テーブルは作成されていないまま

答えて

0

[OK]をクリックして問題が見つかりました。ブール値が「tinyint」(OracleSQLでは存在しません)に設定されており、Dateを通常はOracleSQLで永続化できないことに気がつきませんでした(@ Temporal = TemporalType.TIMESTAMPを割り当てる必要があります)。 'tinyint'部分を削除してアノテーションを追加すると、それが解決されました。物語の道徳:常にデータ型をチェックする。

関連する問題