Одна таблица не создается 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") это позволит убедиться, что имя таблицы не является проблемой.

Другие вопросы по тегам