![](/img/trans.png)
[英]JPA Composite key with ManyToOne getting org.hibernate.PropertyAccessException: could not set a field value by reflection setter of
[英]Hibernate/JPA: could not set a field value by reflection setter
我的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;
}
我確實為基元和實體都有適當的getter和setter(IDE生成)。
這是我的庫。 我並不完全相信我正在使用一組兼容的持久性庫(對烹飪手冊的詳細介紹如何正確地混合和匹配這些庫將受到高度贊賞。)
哇,這很令人沮喪。 3天現在全職嘗試解決這樣的各種問題只是為了基本的ORM。 我覺得有缺陷。 :-(
這似乎是一個正確的代碼。 當我使用Blob []時,我遇到了這個異常的問題
@Lob
@Column(name="DOCUMENTO",nullable=false)
private Blob[] documento;
但是通過Byte []改變,我解決了這個問題。
我只看到了Oracle數據類型,我看到這個LONG是可變長度的字符數據(VARCHAR2數據類型的更大版本)。
我假設你的ID是一個整數....為什么不用Integer改變Long? 你必須記住它只接受原始類型。
這是我的代碼,它工作正常:
@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。
您必須刪除@GeneratedValue
注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.