簡體   English   中英

從Hibernate到EclipseLink的JPA實體

[英]JPA Entity from Hibernate to EclipseLink

對不起我的英語不好

我在EclipseLink JPA中映射實體時遇到一些問題。 我有一些實體:

@Entity
@Table(name = "TSENSOR")
@Cacheable
public class Sensor extends Model implements Serializable {
    @EmbeddedId
    SensorIdentifier key;
    @Column(name = "CDESCRIPTION", columnDefinition = "TEXT")
    String description;
    @Column(name = "CTYPE")
    @Enumerated(EnumType.STRING)
    SensorType type;

    ...

}


@Embeddable
public class SensorIdentifier extends DeviceIdentifier {
    @Column(name = "PNUM")
    byte num;

    ...

}

@Embeddable
@MappedSuperclass
public class DeviceIdentifier extends Model implements Serializable {
    @Column(name = "PSYSTEM", insertable = false, updatable = false)
    String systemName;
    @Column(name="PDEVICEID")
    int id;
    @Column(name="PDEVICESUBID")
    short subId;

    ...

}

在服務器端,此實體在Hibernate JPA中映射並且工作出色。 但是在客戶端上,我需要在EclipseLink JPA中映射此實體(我使用Eclipse RCP 4.x和Gemini DI),並且我有以下例外:

異常[EclipseLink-46](Eclipse Persistence Services-2.5.0.v20130507-3faac2b):org.eclipse.persistence.exceptions.DescriptorException異常描述:應該為主鍵字段[TSENSOR]定義一個非只讀映射。 .PSYSTEM。 描述符:RelationalDescriptor(watchdog.core.client.model.Sensor-> [DatabaseTable(TSENSOR)])

僅實體包含EmbeddedId的問題

該錯誤表明您應該有一個映射

@Column(name = "PSYSTEM", insertable = false, updatable = false)
String systemName;

可以寫入。 (非只讀)因此對PSYSTEM的另一種映射是true,可插入或可更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM