Мне удалось (как вы можете видеть из моих старых постов) вставить однокомантическое отношение через hibernate. Мои два класса сущностей выглядят следующим образом:
Project.java:
@Entity
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToMany(cascade = CascadeType.ALL, mappedBy="project")
@OrderColumn(name = "project_index")
List<Application> applications;
....
Application.java (который является дочерним элементом проекта. Один проект может иметь несколько приложений, но одно приложение относится только к одному проекту)
@Entity
public class Application {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name = "project_id")
private Project project;
...
Пока что вставка данных работает хорошо. Но проблема с получением данных из моей базы данных. Я пробовал два способа:
Способ 1: Я извлекаю проект и пытаюсь вывести приложения из атрибута списка. Но, к сожалению, сущности Приложений находятся в «сохраненном скриншоте», что мне кажется неправильным. Вот скриншот с моего экрана отладки:
На самом деле этот способ работает! Я сделал несколько ошибок где-то еще ...
Способ 2: Я пытаюсь получить список всех приложений с помощью SQL-запроса:
public List<Application> getApplications(int project_id) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Application> applications = session.createQuery("from Application a where a.project_id=" + project_id + " ").list();
return applications;
}
.. который выдает странное исключение -.-
org.hibernate.QueryException: не удалось разрешить свойство: идентификатор_проекта: de..common.entities.Application [from de..common.entities.Application a where a.project_id=1 ]
Проблема способа 2 заключается в том, что я смешиваю SQL и HQL.
Небольшая помощь новичку в спящем состоянии была бы отличной :-)
Приветствия ..