Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate纯sql:一对一联接类(实体/表)的setter_Java_Sql_Hibernate_Class_Join - Fatal编程技术网

Java Hibernate纯sql:一对一联接类(实体/表)的setter

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_

我有一个类似(但更长)的纯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_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查询)