Есть два класса сущностей, которые я пытаюсь включить как часть моего модуля персистентности.Я использую базовый 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();
}
}