Оказалось, что было несколько проблем - одна концептуальная, одна с тем, как IntelliJ создал отношения, которые я копировал, и одна между стулом и клавиатурой ...
IntelliJ выбрал отношения между регионом и субрегионом с владельцем на «неправильном» конце - возможно, проблема схемы, а не ошибка IntelliJ. Как только я понял это и выяснил, как исправить, я мог бы скопировать это в CragEntity и SubRegionEntity
В CragEntity я добавил:
private SubRegionEntity subRegion;
@ManyToOne
@JoinColumn(name="fk_SubRegionId",nullable=false)
public SubRegionEntity getSubRegion() {
return subRegion;
}
public void setSubRegion(SubRegionEntity subRegion) {
this.subRegion = subRegion;
}
и затем в SubRegionEntity я добавил:
private List<CragEntity> crags;
@OneToMany(mappedBy = "subRegion")
List<CragEntity> getCrags() {
return crags;
}
public void setCrags(List<CragEntity> crags) {
this.crags = crags;
}
Кроме того, кажется, что любой класс сущностей, который будет одним концом отношения, должен реализовывать сериализуемый (я думаю, сущности сериализуются в владельца. Так что нужно было добавить в SubRegionEntity и RegionEntity
Глупость с моей стороны, конечно, заключалась в том, что запрос должен был быть c.subRegion.region.name
В противном случае я сравнивал объект типа RegionEntity со строкой ... doh - очень глупая ошибка с моей стороны.
Я новичок в TDD, но как всегда, как только я написал тесты для того, что, по моему мнению, должно происходить с существующим кодом, я прошел через мои ошибки (и получил ключевые слова google по исключениям и ошибкам: -))