Одна таблица не создается toplink
Я чувствую себя действительно глупо, спрашивая об этом. Но я искал свой код в течение 4 часов и не могу понять это. Я перестраивал свою базу данных несколько раз и не могу заставить ее работать. Одна из моих таблиц по какой-то причине не создается. У меня есть 4 таблицы игры, разработчик, gameimage и пользователь. Пользователь не создается, но другой создается идеально и работает. Я уверен, что это глупая ошибка, но я просто не вижу ее. Если бы кто-то мог просто сказать мне, почему это могло произойти, это было бы здорово. Я использую 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
}
1 ответ
Не реальный ответ, но несколько советов, чтобы сузить проблему.
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")
это позволит убедиться, что имя таблицы не является проблемой.