2013-06-11 47 views
0

說我有以下兩個數據庫:如何指定hibernate連接映射?

Employee 
|Name|Age|Sex| 

Table 
|Employee_Name|Location|Brand| 

我希望執行查詢的形式如下:

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

現在,我已經指定了冬眠的.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的映射文件,並進行getter和setter方法爲每一個?

OR ...我是否簡單地將列添加到現有的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

聽起來像是一個非常基本的問題。你應該在一對多/多對一的關係上進行搜索,並首先進行惰性初始化,因爲這是一個非常廣泛的主題。 – Ziul

+0

我沒有......我不能在這裏使用任何可嵌入或嵌入的對象。所以我基本上需要爲return語句創建更新的數據模型。 –

+0

你不必使用可嵌入的對象,你可以添加關係到你的XML: http://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example/ – Ziul

回答

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

+0

他從來沒有說過他想要一個非託管對象,他可以映射適當的關係並使用HQL。而且,這個解決方案更像是最後一個資源,而不是第一個開始。 – Ziul

+0

我添加了一個註釋。 – lunr

+0

但是查詢的返回值呢?那去哪了? –