1

私はSpring 3.2、Spring Data、JPAを使用しています。

メッセージを保存した後、Advertisement オブジェクトを保存します

広告からメッセージにアクセスしようとしましたが、null です

@Entity
public class Advertisement implements Serializable {

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

@OneToMany(mappedBy="id", cascade={CascadeType.REMOVE}, fetch=FetchType.LAZY)
private Set<Message> messages;
}

@Entity
public class Message implements Serializable {

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

@ManyToOne
private Advertisement advertisement;
}

テストユニット

Advertisement ads = new Advertisement();
ads = advertisementRepo.save(ads);

assertNotNull(ads);
assertNotNull(ads.getId());

Message message = new Message();
message.setAdvertisement(ads);
message = msgRepo.save(message);

ads = advertisementRepo.findOne(ads.getId());
ads.getMessages(); //return null

ads.getMessages() がメッセージを返さないのはなぜですか?

4

3 に答える 3

1

新しいコレクションAdvertisementを割り当てた後、保存してみてください。Message

Advertisement ads = new Advertisement();
ads = advertisementRepo.save(ads);

assertNotNull(ads);
assertNotNull(ads.getId());

Message message = new Message();
message.setAdvertisement(ads);
ads.setMessages(new HashSet<Message>());
ads.getMessages().add(message);
ads = advertisementRepo.save(ads);
message = msgRepo.save(message);

ads = advertisementRepo.findOne(ads.getId());
ads.getMessages(); //return null
于 2013-07-24T16:47:58.197 に答える