我管理(如你可以在我的旧帖子中看到的)通过hibernate插入一个onetomany关系。我的两个实体类看起来像下面:休眠从onetomany检索列表
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:我恢复项目,并得到了应用程序列表属性。但不幸的是,应用程序实体处于'storedSnapshot'中,这对我来说似乎很不妥。下面是截图从我的调试屏幕:
其实这样的作品!我做了一些错误,别的地方...
方式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:无法解析属性:PROJECT_ID的:de..common.entities.Application [from de..common.entities.Application a where a.project_id=1 ]
方式2的问题是我混淆了SQL和HQL。
对Hibernate初学者一点帮助将是巨大的:-) 干杯..
什么在'bag'? – Bozho 2010-09-08 11:42:26
解释storedSnapshot究竟有什么问题? – wds 2010-09-08 11:53:34
@Bozho:你在谈论什么包 – Sven 2010-09-08 12:07:43