JPA 1.0 Hibernate & Derby HashMap с использованием ключа Enum - PullRequest
0 голосов
/ 22 февраля 2012

Я ищу помощь в отображении 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 - это перечисление, которое, как я уже сказал, является списком всех команд НФЛ ...

1 Ответ

1 голос
/ 22 февраля 2012

JPA1 не обеспечивает поддержку такой карты. Вы должны перейти к особенностям реализации. JPA2 делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...