Java JPA实体从Hibernate到EclipseLink

Java JPA实体从Hibernate到EclipseLink,java,hibernate,eclipselink,Java,Hibernate,Eclipselink,对不起,我的英语不好 我对EclipseLink JPA中的映射实体有一些问题。 我有一些实体: @Entity @Table(name = "TSENSOR") @Cacheable public class Sensor extends Model implements Serializable { @EmbeddedId SensorIdentifier key; @Column(name = "CDESCRIPTION", columnDefinition = "

对不起,我的英语不好

我对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中映射这个实体(我使用EclipseRCP4.x和Gemini DI),我有一个例外:

异常[EclipseLink-46](Eclipse持久性服务)- 2.5.0.v20130507-3faac2b):org.eclipse.persistence.exceptions.DescriptorException异常 描述:应该为该映射定义一个非只读映射 主键字段[TSENSOR.PSYSTEM]。描述符: RelationalDescriptor(watchdog.core.client.model.Sensor--> [数据库表(TSENSOR)])


只有实体包含EmbeddedId时才会出现此问题。错误说明应该为该实体创建一个映射

@Column(name = "PSYSTEM", insertable = false, updatable = false)
String systemName;
可以写信给我。(非只读)
因此,PSYSTEM的另一个映射为insertable或updatable on true。

错误表明您应该为PSYSTEM设置一个映射

@Column(name = "PSYSTEM", insertable = false, updatable = false)
String systemName;
可以写信给我。(非只读) 因此,PSYSTEM的另一个映射为insertable或updatable on true