[JPA] Rozdzielony klucz do klasy zagnieżdżonej

Odpowiedz Nowy wątek
2019-05-16 09:17
0

Mam problem z instalacją bazy z JPA.

Encja glowna:

@Table(name="Message", schema="dbo")
class Message {
@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name="ID")
protected long id;

@Embedded
private MessageAdditionalData messageAdditionalData;

..
}

Klasa MessageAdditionalData:

@Embeddable
class MessageAdditionalData {
@Id
@Column(name="OFFICEDATETIME", columnDefinition = "DATETIME2 NOT NULL")
private Date OfficeTime;

...

}

Przy inicjalizacji bazy przez JPA:

Exception [EclipseLink-41] (Eclipse Persistence Services - 2.7.3.v20180807-4be1041): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.
Descriptor: RelationalDescriptor(com.pakiet.Message --> [DatabaseTable(Message)])

Exception [EclipseLink-46] (Eclipse Persistence Services - 2.7.3.v20180807-4be1041): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: There should be one non-read-only mapping defined for the primary key field [Message22.OFFICEDATETIME].
Descriptor: RelationalDescriptor(com.pakiet.Message33 --> [DatabaseTable(Message33)])

Wygląda jakby mu nie pasowało to że drugi ID jest w zagnieżdżeniu (niestety musi tam byc)

Niektore Message* maja podtabele polaczone relacją

edytowany 5x, ostatnio: darksead, 2019-05-16 09:24

Pozostało 580 znaków

2019-05-16 13:58
0

dla przyszłych pokoleń :P wciągnąłem id z Message do MessageAdditionalData i oznaczyłem jako @EmbeddedId. Druga rzecz która jeszcze miałem z tym błędem to miałem w adnotacji @Column insertable="false" dla OfficeTime to tez wywaliłem i zaskoczyło ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0