#java #jpa
Вопрос:
Я новичок в JPA и все еще учусь, у меня есть одно сомнение/проблема, связанная с JPA, и я слишком растерян, чтобы найти какое-либо решение, может кто-нибудь, пожалуйста, дайте мне знать, могу ли я сделать какой-либо обходной путь, чтобы это сделать, или укажите мне на некоторую документацию, если это возможно.
Моя структура json:
{
"Action":"txn",
"Rec_count":"1",
"Page_count":"1",
"Records":
[
{
"Pan":"abcd",
"CRN":"cedf"},
{
"Pan":"1234",
"CRN":"sfdg"}
]
}
Теперь, если я хочу указать @Id
поле CRN и сохранить все значения, т. Е. action, rec_count, page_count, pan и CRN, в одной таблице и итерации массива (две строки в приведенном выше случае),
это может быть выполнено или это невозможно сделать?
Потому @Embeddable
что может использоваться для хранения всего в одной таблице, но вы не можете назначить @id
встраиваемый класс.
Класс сущностей
import lombok.*;
import javax.persistence.*;
import java.util.List;
@Table(name="GET_RECORDS")
@ToString
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@Entity
public class entityClass{
private String Action;
private int Rec_cnt;
private String Page_count;
@OnetoMany
private List<Records> records;
}
И я попытался создать класс записей как
import lombok.*;
import javax.persistence.*;
@ToString
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@embeddable
public class Records{
@Id
@NotNull
private String CRN;
@NotNull
private int PAN;
}
Я получаю сообщение об ошибке onetomany attribute value type should not be embeddable
Пожалуйста, дайте мне знать, есть ли какой-нибудь способ сделать это ?
Комментарии:
1. Вы можете использовать
@ElementCollection
аннотацию вместо@OnetoMany
того, чтобы устранять ошибку, но я не думаю, что вы сможете избежать создания jpa дополнительной таблицы для хранения записей2. Встраиваемый работает только один к одному. Почему ты хочешь это сделать? Наличие двух таблиц является целью реляционной базы данных. Если вы хотите хранить только иерархические документы, проверьте MongoDB