「Spring Roo in Action」という本のコードに取り組んでいますが、問題が発生しています。この本のとおり、私は2つのJPAエンティティ、OfferingとCourseを生成しています。提供するまでの道のりは、1対多の依存関係です。 Rooのコマンドシェルを使用Spring-Roo JPAがエンティティを更新しないようにしました
は、私は、このように2つのエンティティ間の関係を生成した:
@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;
}
:
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 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;
}
統合テストを実行すると、失敗します。コースは維持されているようですが、提供はされていません。 1つのオファーを持続して、データベースから取得し、どれもが返されませんされている必要があります。
@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
ああ、申し訳ありません。 STSバージョン3.8.1で動作するSpring Rooリリース1.3.2 – Sotades
また、バックエンドデータベースはwindows-x64上でpostgresqlバージョン9.6.0-rc1です。 – Sotades