Hibernate:我需要从单个db表中只选择父对象,这些对象在hibernate中映射到父类和子类。
这是简化的hibernate表定义:
@Entity
@Polymorphism(type = PolymorphismType.EXPLICIT)
@Inheritance(strategy = InheritanceType. SINGLE_TABLE)
public class parent{
@Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO, generator="parent_gen")
@SequenceGenerator(name="parent_gen", sequenceName="PARENT_SEQUENCE")
private int parentID;
@Column(name="name")
private String name;
}
@Entity
@Table(name = "childtable")
public class child extends parent{
@Column(name="favoriteColor")
private String favoriteColor;
}
在mysql数据库中,这是" childtable"看起来像:
|id|name|favoriteColor|
|1|John|blue|
|2|Smith|red|
|3|Gary|yellow|
现在,我想从仅具有父列的子表中进行选择,并期望在hql中获取父对象。
类似的东西:
Session session = HibernateUtil.getSessionFactory().openSession();
Query query = session
.createQuery("from parent where id <4");
List<parent> result = query.list();
我没有向childtable引入DTYPE,因为没有我需要将父类插入childtable的实例。我只想在进行选择查询时区分父对象和子对象。
如何让它与hibernate一起使用?
更新1: 我找到了一种通过运行来解决问题的方法。我不确定这是否是解决问题的正确方法,但它确实有效。
Query query = session
.createQuery("select new parent(id,name) from parent where id <4");
List<parent> result = query.list();
答案 0 :(得分:2)
我找到了一种通过运行来解决问题的方法。我不确定这是否是解决问题的正确方法,但它确实有效。
Query query = session
.createQuery("select new parent(id,name) from parent where id <4");
List<parent> result = query.list();