Java Hibernate纯sql:一对一联接类(实体/表)的setter
我有一个类似(但更长)的纯sql查询:Java Hibernate纯sql:一对一联接类(实体/表)的setter,java,sql,hibernate,class,join,Java,Sql,Hibernate,Class,Join,我有一个类似(但更长)的纯sql查询: .createSQLQuery(" SELECT a.title, ....., b.type_id, b.type_title, c.city_id, c.city_name FROM articles as a INNER JOIN content_type as b ON a.type_id=b.type_id INNER JOIN city_list as c ON a.city_id=c.city_
.createSQLQuery("
SELECT a.title, ....., b.type_id, b.type_title, c.city_id, c.city_name
FROM articles as a
INNER JOIN content_type as b ON a.type_id=b.type_id
INNER JOIN city_list as c ON a.city_id=c.city_id
WHERE a.id=1")
.addScalar("title")
.....
.setResultTransformer(Transformers.aliasToBean(Article.class))
还有一些java代码:
@Table(name="articles")
Class Article ... {
...
@Column(name="title")
private String title;
@OneToOne
@JoinColumn(name="type_id")
private ContentType type;
@OneToOne
@JoinColumn(name="city_id")
private Сity city;
...
}
@Table(name="content_type")
Class ContentType ... {
...
@Column(name="type_id")
private Long id;
...
}
@Table(name="city_list")
Class City ... {
...
@Column(name="city_id")
private Long id;
...
}
那么,在hibernate.createSQLQuery之后应该如何映射它呢?
我试过这个,但不起作用:
.addJoin("b","type")
.addJoin("c","city")
谢谢
另外,我需要将这个查询保存在纯sql中,因为实际查询中的“where”块具有hibernate无法实现的某些逻辑
UPD:执行SQL查询没有问题,问题是如何在Article类中映射City和ContentType类。也就是说,我在尝试从结果集中访问ContentType/City(抛出Article.getContentType())时收到一个NullPoinerException。您可以使用
createSqlQuery()
方法执行查询,也可以使用createQuery()
方法使用HQL查询
查询的HQL转换为
SELECT a.title, b.type_id, b.type_title, c.city_id, c.city_name
FROM Article AS a
INNER JOIN a.type AS b
INNER JOIN a.city AS c
WHERE a.id = 1
希望这能解决你的问题阅读
还可以阅读关于您可以使用@NativeSqlQuery(//在此处定义您的sql查询)