Hibernate / JPA: не удалось установить значение поля с помощью установщика отражения - PullRequest
5 голосов
/ 12 февраля 2011

Моя одиссея JPA / Hibernate продолжается ...

Я пытаюсь обойти эту проблему , и поэтому мне пришлось определить примитивный @Ids в моем классе, который использует 3 поля сущностей в качестве составного ключа. Кажется, это немного продвинуло меня вперед, но теперь я получаю это при сохранении:

javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not set a field value by reflection setter of com.example.model.LanguageSkill.stafferId

Вот мой составной класс:

public class LanguageSkill implements Serializable
{
    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    @Column(name = "Staffer_ID")
    private Long stafferId;

    @Id
    @ManyToOne(cascade = CascadeType.ALL)
    @MapsId(value = "stafferId")
    private Staffer staffer;

    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    @Column(name = "Language_ID")
    private Long languageId;

    @ManyToOne
    @MapsId(value= "languageId")
    private Language language;

    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    @Column(name = "Language_Proficiency_ID")
    private Long languageProficiencyId;

    @ManyToOne
    @MapsId(value= "languageProficiencyId")
    private LanguageProficiency languageProficiency;
}

У меня есть правильные методы получения и установки (генерируемые IDE) как для примитивов, так и для сущностей.

Вот мои любимые. Я не совсем уверен, что я использую совместимый набор постоянных библиотек (ссылки на кулинарную книгу, подробно описывающие, как правильно смешивать и сопоставлять их, будут высоко оценены).

  • Hibernate 3.5.6-SNAPSHOT
  • hibernate-jpamodelgen 1.1.0.CR1
  • hibernate-validator 3.1.0.GA
  • MySQL 5.1.6
  • jsr250-api 1.0
  • javax.validation validation-api 1.0.0.GA

Ух ты, это расстраивает. 3 дня сейчас полный рабочий день, пытаясь решить различные проблемы, как это только для основного ORM Я чувствую себя неполноценным. : - (

Ответы [ 2 ]

1 голос
/ 25 января 2012

Кажется, правильный код. У меня была проблема с этим исключением, когда я использовал Blob []

@Lob
@Column(name="DOCUMENTO",nullable=false)
private Blob[] documento;

Но, изменив Byte [], я решил эту проблему.

У меня есть только экземпляр, который ищет типы данных Oracle, я видел это LONG - это символьные данные переменной длины (более крупная версия - тип данных VARCHAR2).

Я предполагаю, что ваш ID является целым числом .... Почему бы не изменить Long на Integer? Вы должны помнить, что он принимает только примитивные типы.

Это мой код, и он отлично работает:

@Id
@SequenceGenerator(sequenceName="SQ_DOCUMENTO",name="seqDocumento")
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seqDocumento")
private Integer idDocumento;

Я использую Hibernate 3.5.6-final, Spring 3.0.4, Junit 4 и Oracle 11g.

0 голосов
/ 10 декабря 2011

Вы должны удалить аннотации @GeneratedValue.

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