Я работаю над кодом из книги «Spring Roo in Action», и у меня возникает проблема. Согласно книге, я создаю два субъекта JPA: «Предложение и курс»; Конечно, предложение - это зависимость «один ко многим».Spring-Roo JPA созданный объект не обновляется
Использование командной оболочки Roo, я сгенерировал отношения между двумя субъектами, таким образом:
focus --class ~.model.Course
field set --fieldName offerings --type ~.model.Offering --cardinality ONE_TO_MANY --mappedBy "course"
focus --class ~.model.Offering
field reference --fieldName course --type ~.model.Course --cardinality MANY_TO_ONE
Это сгенерированный класс код Предлагая с аннотациями:
@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class Offering {
/**
*/
@NotNull
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(style = "M-")
private Date offerDate;
/**
*/
@NotNull
@Size(min = 1, max = 80)
private String locationName;
/**
*/
@ManyToOne
private Course course;
}
Код курса для курса:
@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class Course {
/**
*/
private String name;
/**
*/
private BigDecimal listPrice;
/**
*/
private String description;
/**
*/
private Integer maximumCapacity;
/**
*/
@Temporal(TemporalType.DATE)
@DateTimeFormat(style = "S-")
private Date runDate;
/**
*/
@OneToMany(cascade = CascadeType.ALL, mappedBy = "course")
private Set<Offering> offerings = new HashSet<Offering>();
/**
*/
@ManyToOne
private TrainingProgram trainingProgram;
}
Теперь, когда я запускаю интеграционный тест, он терпит неудачу, кажется, что курс сохраняется, но предложение не является. Одно предложение должно было сохранялось, а затем извлекается из базы данных, но ни один не вернулся:
@Test
public void addCourseAndOffering(){
CourseDataOnDemand courseDod = new CourseDataOnDemand();
Course course = courseDod.getNewTransientCourse(0);
course.setListPrice(new BigDecimal("100.00"));
OfferingDataOnDemand offerDod = new OfferingDataOnDemand();
Offering offer = offerDod.getNewTransientOffering(0);
course.getOfferings().add(offer);
course.persist();
course.flush();
course.clear();
Course persistedCourse = Course.findCourse(course.getId());
Assert.assertNotNull(persistedCourse.getId());
Assert.assertEquals(course.getListPrice(), persistedCourse.getListPrice());
Set<Offering> offers = persistedCourse.getOfferings();
int size = offers.size();
Assert.assertEquals(1, persistedCourse.getOfferings().size());
}
}
Может кто-нибудь пожалуйста, сообщите, что я делаю неправильно здесь?
Какую версию Roo вы используете? пожалуйста, опишите свою среду немного больше. – eruiz
Ах, извините; Spring Roo Release 1.3.2 работает на STS версии 3.8.1. – Sotades
. Также базовая база данных - postgresql версия 9.6.0-rc1 на windows-x64. – Sotades