有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何指定hibernate连接映射?

假设我有以下两个数据库:

Employee
|Name|Age|Sex|

Table
|Employee_Name|Location|Brand|

我希望执行以下形式的查询:

select * from table,employee where table.employee_name=employee.name;

现在,我已经指定了hibernate。哈佛商学院。这两个表的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映射文件并为每个映射生成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.

现在,在这种情况下,当我只需要员工信息时会发生什么? 请帮帮我,伙计们。非常感谢


共 (1) 个答案

  1. # 1 楼答案

    注意:以下解释仅适用于出于某种原因想要使用本机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