JPA mapping Another Entity with EmbeddedId as Primary key

248
17 апреля 2018, 05:44

I have the following structure in my database: And I need to create entities from my Java application.

I made the following JPA mapping:

@Entity
@Table
public class Chat {
    @Id
    private long chatId;
    @Column(length = 512)
    private String title;
    //constructors, getters, setters
}
@Embeddable
public class MessagePK implements Serializable {
    @Column
    private long chatId;
    @Column
    private int messageId;
    //constructors, getters, setters, hashcode and equals
}
@Entity
@Table
public class Message {
    @EmbeddedId
    private MessagePK messagePK;
    @MapsId("chatId")
    @JoinColumn(name = "chat_id")
    @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    private Chat chat;
    @Column(length = 4096)
    private String text;
    //constructors, getters, setters
}

And it works perfectly. Now I want to add MessageRelation mapping and I want to use entities where it's possible to save all entities by one call to repository. For example:

@Entity
@Table
public class MessageRelation {
    @EmbeddedId
    private MessagePK messagePK;
    @Column
    private String type;
    @ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    private Message target;
    @ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    private Message source;
    //constructors, getters, setters
}
//save operation
MessageRelation relation = new MessageRelation();
relation.setType(...);
relation.setTarget(new Message(...));
relation.setSource(new Message(...));
repository.save(relation);

And it doesn't work, of course. I have tried a hungred of different options of JPA annotation and everytime I was getting some errors. Now I can get working solution only withount Entities parameters in MessageRelation POJO. Please, advice me best mapping which should work with that Database model.

READ ALSO
Нужна помощь: api Яндекс диска

Нужна помощь: api Яндекс диска

Пытаюсь разобраться с apiВыбор пал на api Яндекс диска, но у них нет примеров, половина ссылок на документацию на сайте битые, а т

231
2хсторонняя передача файла NIO.2

2хсторонняя передача файла NIO.2

Здравствуйте, у меня есть код передачи от сервера -> клиенту, и наоборотПо отдельности все работает нормально, но я хочу сделать 2х сторонюю...

244
Формат даты Java

Формат даты Java

Почему здесь - 2 d (dd) и 2 M - MM? Что было бы, если бы было указано dM

253
Ошибка java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to org.apache.xerces.dom.ElementNSImpl

Ошибка java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to org.apache.xerces.dom.ElementNSImpl

Метод парсит XML ответ веб-сервиса цбрф Используется библиотека Xerces При запуске приложения на сервере возникает ошибка на строку ElementNSImpl...

282