2012-06-06 36 views
0

我感覺真的很愚蠢,不得不問這個問題。但我一直在查看我的代碼4個小時,但無法弄清楚。我已經重建了好幾次數據庫,並且無法正常工作。 我的表格之一由於某種原因未被創建。我有4桌遊戲,開發人員,gameimage和用戶。用戶沒有被創建,但另一個正在完美創建並正在工作。我相信這是一個愚蠢的錯誤,但我只是沒有看到它。 如果有人可以告訴我爲什麼這可能會發生,這將是偉大的。 我使用的TopLink一個表不是由toplink創建的

這裏是我的代碼:

持久的xm​​l:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.0" 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"> 
<persistence-unit name="GameDatabasePU" transaction-type="RESOURCE_LOCAL"> 
<provider>oracle.toplink.essentials.PersistenceProvider</provider> 
<class>domainmodel.Game</class> 
<class>domainmodel.GameImage</class> 
<class>domainmodel.Developer</class> 
<class>domainmodel.User</class> 
<properties> 
    <property name="toplink.jdbc.user" value="app"/> 
    <property name="toplink.jdbc.password" value="app"/> 
    <property name="toplink.jdbc.url" value="jdbc:derby://localhost:1527/Gamedatabase;create=true"/> 
    <property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/> 
    <property name="toplink.ddl-generation" value="drop-and-create-tables"/> 
</properties> 
</persistence-unit> 
</persistence> 

用戶:

@Entity 
public class User { 
    @Id 
    private String username; 
    private String password; 
    private String firstName; 
    private String surname; 

    public User() { 
    } 

    public User(String naam, String pas){ 
     setUsername(naam); 
     setPassword(pas); 
    } 

    public User(String naam, String pas, String firstName, String surname){ 
     setUsername(naam); 
     setPassword(pas); 
     setFirstName(firstName); 
     setSurname(surname); 
    } 

    public void setUsername(String naam){ 
     this.username=naam; 
    } 
    //methods 
} 
+0

瘋狂......我今天看到過這個問題兩次([Hibernate沒有在Db中創建表,但顯示創建語句](http://stackoverflow.com/questions/10919844/hibernate-has-not-created- table-in-db-but-showing-create-statement))...也許原因/解決方案可能是相關的。 –

+0

我不認爲這是同一個問題:/ –

+0

1)如果你只是添加一個autogenereated int /長ID - 它會開始工作? 2)如果您先手動放下它,它會創建表格嗎? – esej

回答

2

不是真的一個答案,但更多的一些提示,以縮小問題下。

1)請從您的persistence.xml移除所有其他類(註釋掉其他類註釋)

也許問題是在另一個類和輸出是一種誤導。

2)嘗試將調試/輸出級別設置爲另一級別(DEBUG,FINE,FINEST)並讓JPA提供程序公開查詢。

對於TopLink的我認爲加上給你的prersistence屬性部分將這樣的伎倆:

<property name="toplink.logging.level" value="FINEST" /> 

3)數據庫您使用的? MySql,PostgreSQL,HSQL,SQL服務器?

有些數據庫不(完全)支持某些事情。

4)應該不重要,但無論如何;

@Table(name = "user")@Table(name = "usera")註釋您的用戶類,這將確保表名不是問題。

+0

非常感謝你!偉大的提示。顯然這是表名。這是我嘗試的第一件事。用戶不工作,因爲它是一個標識符。我實際上應該知道:/添加@Table(name =「\」user \「」)做了訣竅。 –

相關問題