0

私はしばらく Hibernate を使用してきましたが、今回はここで型にはまらないことをしようとしています。その可能性さえ定かではありません。

私がしたいのは、単一のテーブルからデータをロードすることです。この列のいくつかには、残りのフィールドが定義されています (ほぼ 20 前後で、時間とともに増加する可能性があります)。すべての整数をマップにロードします。列の名前がキーになり、データがその値になるようにします。

私は Hibernate 4.1.4 を使用しており、注釈を使用してフィールドを列にマップしています。

さらに明確にするために: テーブル定義:

CREATE TABLE TempTable
(
 id SERIAL,
 revId TEXT,
 type INTEGER,
 group INTEGER,

 col_1 INTEGER,
 col_2 INTEGER,
 col_3 INTEGER,
 col_4 INTEGER,
 col_5 INTEGER,
 col_6 INTEGER,
 col_7 INTEGER,
 col_8 INTEGER,
 col_9 INTEGER
}

DAOモデルは次のようになります

@Entity
@Table(name = "TempTable")
public class StatsModel {
    private Long entryId;
    private String revId;

    private Integer type;
    private Integer group;

    private Map<String, Integer> metrics; // Map in which I want columns col_1 to col_9 as "Column Name" Vs. "Value"

    @Id
    @Column(name = "id", columnDefinition = "serial")
    @Generated(GenerationTime.INSERT)
    public Long getEntryId() {
        return entryId;
    }

    public void setEntryId(Long entryId) {
        this.entryId = entryId;
    }

    @Column(name = "tx_rev")
    public String getRevId() {
        return revId;
    }

    public void setRevId(String revId) {
        this.revId= revId;
    }

    @Column(name = "nu_type")
    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    @Column(name = "nu_group")
    public Integer getGroup() {
        return group;
    }

    public void setGroup(Integer group) {
        this.group = group;
    }
}
4

2 に答える 2

0

クエリを変更するマップとしてデータをロードできます。これは休止状態のドキュメントの例です。

select 
    new map(
        max(bodyWeight) as max,
        min(bodyWeight) as min, count(*) as n 
    ) 
from Cat cat

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-select

于 2013-05-13T19:27:35.733 に答える