2015-07-19 2 views
0

Я субъект, который принадлежит много объектовSpring JPA Id пустой

@Entity 
public class Lodger implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long lodgerId; 

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "lodger") 
    private List<IdentityCard> identityCardList; 

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "lodger") 
private List<Phone> phoneList; 
... 

}

@Entity 
public class IdentityCard { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long identityCardId; 

    private String identyCardValue; 

    @OneToOne 
    @JoinColumn(name = "identity_card_type_id") //without -> identity_card_type_identityCardTypeId 
    private IdentityCardType identityCardType; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "lodger_id") 
    private Lodger lodger; 
} 

Когда я сохранить мой жилец, весь мой объект сохраняется (identiyCard, телефон), но их Поле lodger_id имеет значение.

Я думал, что это должно было быть сделано автоматически, когда мы используем cascadeType.all.

ответ

4

Владелец стороны би-directioinal ассоциаций в IdentityCard и Phone лиц, это то же самое, как говорят, что mappedBy в Lodger «s ассоциаций.

Таким образом, для сохранения ссылок вы должны установить атрибут жилец вIdentityCard и Phone лиц. Нет необходимости добавлять эти объекты в коллекции Lodger, но это нормально, потому что вы хотите сохранить эти объекты вместе с Lodger, используя cascade.

+0

какая другая возможность? –

+0

@roberttrudel - это способ сделать это для двунаправленной ассоциации «один ко многим». Вы можете попробовать «обходной путь», если вы хотите, чтобы сторона владельца в Lodger: используйте «много-ко-многим» вместо «один-ко-многим»/«много-к-одному», установите mappedBy в Phone и IdentCard, и вы должны добавить дополнительные элементы управления чтобы эти объекты были связаны только с одним жильцом (например, с уникальным контролем-ограничением по полю id телефона таблицы соединений) – Guillermo

Смежные вопросы