Блок постоянства, не включающий все мои аннотированные классы - PullRequest
0 голосов
/ 04 апреля 2019

Есть два класса сущностей, которые я пытаюсь включить как часть моего модуля персистентности.Я использую базовый JPA в банке ... ничего особенного.

Вот мой файл persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="GameDataPU" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <!--<class>com.schroetech.playbook.model.cantstop.persistence.CantStopGameData</class>-->
        <!--<class>com.schroetech.playbook.model.common.persistence.GamingSession</class>-->
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/PlayBook"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="javax.persistence.jdbc.password" value="admin123"/>
            <property name="eclipselink.logging.level" value="OFF"/>
        </properties>
    </persistence-unit>
</persistence>

Объект GamingSession сохраняется очень хорошо, но когда я пытаюсьpersist CantStopGameData Я получаю следующую ошибку:

java.lang.IllegalArgumentException: Object: com.schroetech.playbook.model.cantstop.persistence.CantStopGameData[ gameId=baf706d7-2a00-4dc0-94e2-09ebd2427d54 ] is not a known entity type.

Я также пытался включить классы напрямую (закомментированные строки), но это имело тот же эффект.

Вот важные битыОбъект GamingSession (тот, который работает):

package com.schroetech.playbook.model.common.persistence;

@Entity
@Table(name = "GAMING_SESSION", schema = "APP")
@XmlRootElement
public class GamingSession implements Serializable {

    @Column(name = "NUMBER_OF_PLAYS")
    private Integer numberOfPlays;

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "SESSION_ID")
    private String sessionId;
    @Basic(optional = false)
    @Column(name = "GAME_NAME")
    private String gameName;
    @Lob
    @Column(name = "DESCRIPTION")
    private String description;

    private static final String PERSISTENCE_UNIT = "GameDataPU";

    ...

    public static void persist(GamingSession session) {
        EntityManagerFactory emfactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
        EntityManager em = emfactory.createEntityManager();

        em.getTransaction().begin();
        em.persist(session);
        em.getTransaction().commit();
    }
}

И CantStopGameData (тот, который не работает):

package com.schroetech.playbook.model.cantstop.persistence;

@Entity
@Table(name = "CANTSTOP_GAMEDATA", schema = "APP")
@XmlRootElement
public class CantStopGameData implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "GAME_ID")
    private String gameId;
    @Basic(optional = false)
    @Column(name = "SESSION_ID")
    private String sessionId;
    @Basic(optional = false)
    @Column(name = "PLAYER1_ID")
    private String player1Id;
    @Basic(optional = false)
    @Column(name = "PLAYER2_ID")
    private String player2Id;
    @Column(name = "PLAYER3_ID")
    private String player3Id;
    @Column(name = "PLAYER4_ID")
    private String player4Id;
    @Column(name = "PLAYER1_WON")
    private Boolean player1Won;
    @Column(name = "PLAYER2_WON")
    private Boolean player2Won;
    @Column(name = "PLAYER3_WON")
    private Boolean player3Won;
    @Column(name = "PLAYER4_WON")
    private Boolean player4Won;

    private static String PERSISTENCE_UNIT = "GameDataPU";

    ...

    public static void persist(CantStopGameData gameData) {
        EntityManagerFactory emfactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
        EntityManager em = emfactory.createEntityManager();

        em.getTransaction().begin();
        em.persist(gameData);
        em.getTransaction().commit();
    }

    public static void persistAll(Collection<CantStopGameData> gameData) {
        EntityManagerFactory emfactory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
        EntityManager em = emfactory.createEntityManager();

        em.getTransaction().begin();
        gameData.forEach((singleGameData) -> {
            em.persist(singleGameData);
        });
        em.getTransaction().commit();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...