0

私は基本的に、次のスキーマを持つ2つのテーブルを持つデータベースを持っています:

Employee 

|id|Age|Sex|

Table

|Table_id|Emp_id|Location|

私の employee.hbm.xml ファイルは次のようになります。

    <property name="id"
          type="integer"
          column="emp_id" />
    <property name="age"
          type="integer"
          column="age" />
    <property name="sex"
          type="string"
          column="sex" />

私の table.hbm.xml ファイルは次のようになります。

    <property name="table_id"
          type="integer"
          column="table_id" />
    <property name="emp_id"
          type="integer"
          column="emp_id" />
    <property name="location"
          type="string"
          column="location" />

マッピングに必要なクラス、つまりゲッターとセッターもあります。それらは次のようになります。

public class EmployeeModel {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="id", referencedColumnName="emp_id")

    private int id;
    private int age;
    private String sex;
 //Getters and setters for all the variables


public class TableModel {
@OneToMany(mappedBy="EmployeeModel")

    private int table_id;
    private int emp_id;
    private String location;

    private int table_id;
    private int emp_Id;
    private String location;
 //Getters and setters for all the variables

戻りデータを収集するために、次のような EmployeeTableModel という新しいクラスを作成しました。

public class EmployeeTableModel{
    private int table_id;
    private int emp_id;
    private String location;
    private int table_id;
    private int emp_Id;
    private String location;    
    }

おわかりのように、私は基本的に、従業員と彼が座っているテーブルの詳細を私に伝えるために電話をかける必要があります。それらの間には 1 対 1 の相関関係があります。私のコードには多対 1 の相関関係があることを理解しています。修正してください。現在、私のクエリは次のとおりです。

List<EmployeeTableModel> data = sess.createCriteria(EmployeeModel.class)
          .setFetchMode("TableModel", FetchMode.JOIN) 
          .add(Restrictions.eq("emp_id", "ANY INPUT"  )).list();

次のようなクエリが返されることを期待しています。

select e.id,e.age,e.sex,t.table_id,t.emp_id,t.location from employee e, table t;

ただし、代わりに次のようになります。

select e.id,e.age,e.sex from employee e;

テーブルに Employee の変数を追加し、クエリを修正し、HQL を使用しましたが、何が問題なのかまだわかりません。誰かがそれで何がうまくいかないのか教えてもらえますか? または別の答えを教えてください。

4

1 に答える 1