说我有以下两个数据库:
Employee
|Name|Age|Sex|
Table
|Employee_Name|Location|Brand|
我希望执行以下形式的查询:
select * from table,employee where table.employee_name=employee.name;
现在,我已经为这两个表指定了hibernate .hbm.xml文件。但在这种情况下,查询的返回值是一个连接。因此,我该如何为它指定数据结构?我是否制作单独的文件,如:
<id name="name" type="string" column="name">
<generator class="native">
</generator>
</id>
<property name="age"
type="string"
column="age" />
<property name="sex"
type="string"
column="sex" />
<property name="location"
type="string"
column="location" />
<property name="brand"
type="string"
column="brand" />
然后编写java-mappings文件并为每个文件制作getter和setter?
或者......我只是将列添加到现有的java文件而不修改任何XML吗?
public class EmployeeModel // THIS IS THE JAVA MAPPING FILE FOR EMPLOYEE
{ private String name;
private String age;
private String sex;
private String location;
private String brand;
// Getters and Setters for the above values.
现在,当我在这种情况下只需要员工信息时会发生什么? 请帮帮我们。非常感谢!
答案 0 :(得分:0)
注意:以下说明仅适用于您出于某种原因要使用本机SQL的情况。
由于您不打算保留返回的值,因此不应创建任何映射文件(.hbm.xml
)。 Hibernate可以返回一个非托管对象。只需创建一个EmployeeModel
类并使用它:
session.createSQLQuery("select employee.Name, employee.Age, employee.Sex, table.Location, table.Brand from table, employee where table.employee_name=employee.name")
.setResultTransformer(Transformers.aliasToBean(EmployeeModel.class));
如下所述:http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#d5e8394
如果你只想要Employee
,你可以这样做:
sess.createSQLQuery("select employee.* from from table, employee where table.employee_name=employee.name").addEntity(Employee.class);
这在此解释:http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#d5e8271