0

私の英語でごめんなさい

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 が含まれている場合にのみ発生します

4

1 に答える 1