Сначала я должен сказать, что я совсем новичок в Spring и Hibernate.
Теперь моя ситуация: у меня есть одна таблица с именем Places, которая имеет: Id PK, имя и описание.у меня есть вторая таблица с именем Edges, которая имеет: ID PK, fromPlaces (fk для pk id из мест) и toPlaces (также ссылается на id из мест).
теперь я хочу сделать запрос, которыйв конечном итоге будет отображаться на объект, который будет иметь мой объект Edge плюс оба имени ссылки fromPlace и ссылки toPlaces.
в настоящее время у меня есть это в моем DAO, который функционирует нормально:
public List<Edge> listEdges() {
return sessionFactory.getCurrentSession().createQuery("from Edge")
.list();
}
Пожалуйста, любой хороший учебник или примеры кода, которые вы можете дать мне, чтобы помочь мне в процессе создания того, что мне нужно.я не знаю, полезно ли это, но я использую аннотации, чтобы связать все.
ВТОРОЕ РЕДАКТИРОВАНИЕ: Добавление решения для моих классов как для ссылок, так и впоследствии, если место удаляется для автоматического удаления объекта.ссылки на Edge-объекты.
@Entity
@Table(name="PLACES")
public class Place {
@Id
@Column(name="ID")
@GeneratedValue
private Integer id;
@Column(name="NAME")
private String name;
@Column(name="DESCRIPTION")
private String description;
@Column(name="IMAGEURL")
private String imageUrl;
@Column(name="ISVALIDDESTINATION")
@Type(type = "org.hibernate.type.NumericBooleanType")
private boolean validDestination;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "FROMPLACE_ID")
private Set<Edge> fromPlace = new HashSet<Edge>(0);
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "TOPLACE_ID")
private Set<Edge> toPlace = new HashSet<Edge>(0);
И это моя краевая модель: обратите внимание, я здесь опускаю методы получения и установки, потому что у них нет аннотаций, они просто стандартные.
@Entity
@Table(name = "EDGES")
public class Edge {
@Id
@Column(name = "ID")
@GeneratedValue
private Integer id;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="FROMPLACE_ID")
private Place fromPlace;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="TOPLACE_ID")
private Place toPlace;
@Column(name="COST")
private Integer cost;