UML diagram
I need a OneToMany association from the country to the Place superclass (@MappedSuperclass). It can be bidirectional. I need something like @OneToAny ...
@MappedSuperclass public class Place { private String name; private Country country; @Column public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToOne @JoinColumn(name="country_id") public Country getCountry() { return country; } public void setCountry(Country country) { this.country = country; } }
Country:
@Entity public class Country { private long id; private String name; private List<Place> places; @Any(metaColumn = @Column(name = "place_type"), fetch = FetchType.EAGER) @AnyMetaDef(idType = "integer", metaType = "string", metaValues = { @MetaValue(value = "C", targetEntity = City.class), @MetaValue(value = "R", targetEntity = Region.class) }) @Cascade({ org.hibernate.annotations.CascadeType.ALL })
Without @JoinColunm there is an exception
Caused by: org.hibernate.AnnotationException: @Any requires an explicit @JoinColumn(s): tour.spring.bc.model.vo.Country.places
In the table City and Region there is a foreign key to the table Country (Region.country_id, City.country_id), which is in order. But I don't need the foreign key in the Country table for the Region and City tables, so I don't need @JoinColum.
I have searched for a solution a lot, but it seems that there is no good solution.
source share