сохранить несколько отношений OneToMany с JPA - PullRequest
0 голосов
/ 25 мая 2018

У меня есть 4 объекта, связанных с OneToMany Realtionship с JPA.Я запутался в том, как сохранить эти сущности. Как правильно сохранить эти 4 сущности (я не хочу использовать cascade.persist). Я использую Spring и Hibernate.Для простоты я добавлю только соответствующие поля в свои сущности.

Ответная сущность:

@Entity
public class Response{
@Id 
private long responseID;
@OneToManye(mappedBy="response")
List <Income> incomes;
}

Доходная сущность:

  @Entity
    public class Income{
    @Id 
    private long incomeID;
    @ManytoOne
    JoinColumn(name="RESPONSE_ID")
    private Response response;
    @OneToManye(mappedBy="income")
    List <IncomeBlock> incomeBlocks;
    }

IncomeBlock сущность:

 @Entity
    public class IncomeBlock{
    @Id 
    private long incomeBlockID;
    @ManytoOne
    JoinColumn(name="INCOME_ID")
    private Income income;
    @OneToManye(mappedBy="incomeBlock")
    List <IncomeDetail> incomeDetails;
    }

IncomeDetail entity:

 @Entity
    public class IncomeDetail{
    @Id 
    private long incomeDetailID;
    @ManytoOne
    JoinColumn(name="INCOME_BLK_ID")
    private IncomeBlock incomeBlock;
    }

спасибо, ребята, за вашу помощь.до сих пор я попробовал 2 метода:

createcomeDetail:

IncomeBlock incomeBlock=new IncomeBlock ();
 em.persist (incomeBlock);
 IncomeDetail incomeDetail=new IncomeDetail ();
 incomeBlock.addIncomeDetail(incomeDetail);
 em.persist(incomeDetail);

createcomeBlock:

 IncomeBlock incomeBlock=new IncomeBlock ();
 Income income=new Income();
 em.persist (income);
 IncomeDetail incomeBlock=new IncomeBlock ();
 income.addIncomeBlock(incomeBlock);
 em.persist(incomeDetail);

Я пробовал эти 2 метода до сих пор, и это не сохраняетсяв базе данных.

1 Ответ

0 голосов
/ 25 мая 2018

Если вы хотите сохранить отношение OneToMany с вашей сущностью, вам нужно определить cascadeType при объявлении отношения.например,

@OneToMany(cascade = CascadeType.ALL, mappedBy="income")
List <IncomeBlock> incomeBlocks;

Подробнее см. https://docs.oracle.com/javaee/5/api/javax/persistence/OneToMany.html

. Если вы не хотите использовать cascade, попробуйте следующий фрагмент кода:

 Income income=new Income();
 IncomeBlock incomeBlock=new IncomeBlock ();
 IncomeDetail incomeDetail=new IncomeDetail ();
 incomeBlock.addIncomeDetail(incomeDetail);
 income.addIncomeBlock(incomeBlock);
 em.persist(income);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...