我不得不问这个问题真的很蠢。但我一直在看我的代码4个小时,但无法弄清楚。我已经多次重建我的数据库,无法让它工作。 我的一张桌子因某些原因没有被创建。我有4桌游戏,开发者,游戏图像和用户。用户没有被创建,但另一个正在创建并且正常工作。我确定这是一个愚蠢的错误,但我只是没有看到它。 如果有人能告诉我为什么会发生这种情况会很棒。 我正在使用toplink
这是我的代码:
持久性xml:
<?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 :(得分:2)
不是一个答案,而是更多一些提示,以缩小问题。
1)尝试从persistence.xml中删除所有其他类(注释掉其他类上的注释)
也许问题出现在另一个类中,输出会产生误导。
2)尝试将调试/输出级别设置为另一个级别(DEBUG,FINE,FINEST)并让JPA提供程序公开查询。
对于TopLink,我认为将这个添加到你的prersistence属性部分就可以了:
<property name="toplink.logging.level" value="FINEST" />
3)您使用的是哪个数据库? MySql,PostgreSQL,HSQL,SQL-server?
有些数据库不完全支持某些事情。
4)无论如何都不重要;
使用@Table(name = "user")
或@Table(name = "usera")
为您的用户分类添加注释,这样可以确保表格名称不是问题所在。