Я ищу помощь в отображении HashMap, используя JPA, который построен так ... <NflTeam, Integer>
.NflTeam - это список всех возможных команд НФЛ.Значение для карты на данном этапе неважно.
Я пытался не использовать какие-либо аннотации над полем хэш-карты в классе сущностей, но обнаружил, что при попытке обновить карту,Я получаю следующую ошибку:
ОШИБКА org.hibernate.util.JDBCExceptionReporter - Обнаружена ошибка усечения при попытке сжать VARCHAR () FOR BIT DATA '(значение двоичных данных не отображается)' до длины 2555371 [AWT-EventQueue-0] ОШИБКА org.hibernate.event.def.AbstractFlushingEventListener - Не удалось синхронизировать состояние базы данных с сеансом
Я также попытался добавить следующую аннотацию в поле вкласс сущностей @ElementCollection
, как я видел в нескольких местах, говорят, что это аннотация, используемая для сопоставления хеш-карт, но я обнаружил, что получаю следующую ошибку при попытке сопоставить сущность:
Вызывается: org.hibernate.AnnotationException: незаконная попытка сопоставить не коллекцию как @OneToMany, @ManyToMany или @CollectionOfElements: ie.maden.stats.core.beans.Player.teamsPlayedWithMap
Кто-нибудь знает правильную аннотацию для использования в JPA, чтобы отобразить обобщенную хэш-карту (созданную из)?
Заранее спасибо
РЕДАКТИРОВАТЬ ::
Вот мой файл persistence.xml:
<persistence version="2.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_2_0.xsd"> <persistence-unit name="MaddenStatsPU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>ie.madden.stats.core.beans.Player</class> <class>ie.madden.stats.core.beans.Fixture</class> <properties>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="false"/>
<property name="javax.persistence.jdbc.url" value="jdbc:derby:maddenstats;create=true"/>
<property name="javax.persistence.jdbc.password" value="madden"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="javax.persistence.jdbc.user" value="madden"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
<property name="hibernate.default_schema" value="MaddenStats"/> </properties> </persistence-unit> </persistence>
Во-вторых, вот мой класс сущностей для Player, в котором используется хэш-карта:
@Entity
public class Player implements IEntityBean
{
@Id
@GeneratedValue(generator="id_Gen")
@SequenceGenerator(name="id_Gen", sequenceName="id_Seq")
private Long playerId;
private String name;
private Long played = new Long(0);
private Long wins = new Long(0);
private Long losses = new Long(0);
private Integer winPercentage = new Integer(0);
private HashMap<NflTeam, Integer> teamsPlayedWithMap = new HashMap<>();
}
В приведенном выше примере я удалил все попытки, которые я пытался отобразить в HashMap.
О, также NflTeam - это перечисление, которое, как я уже сказал, является списком всех команд НФЛ ...