基于视图的Hibernate复合键

时间:2011-11-29 23:13:19

标签: java hibernate orm

我有一个视图用以下列表示一些统计信息:

Count Month Year

我想使用Hibernate将该视图映射到具有相同字段的实体。它看起来不像Hibernate允许您映射没有主键的实体,无论是复合键还是单个列。

这是我想要映射到视图的类:

@Entity @Table(name="UserRegistration")
public class UserRegistration {

    private int year;
    private int month;
    private int count;

    // Setters and getters omited...    
}

如何在其上声明一个复合键,包括使Hibernate满意的所有列?

1 个答案:

答案 0 :(得分:1)

我对Java很新,所以这个解决方案看起来很粗糙。

请随意提供更优雅的一个!

这就是代码的样子:

// UserRegistrationPk.java file
@Embeddable
public class UserRegistrationPk implements Serializable {

    private static final long serialVersionUID = 1L;

    private int year;
    private int month;
    private int count;

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }   
} 

然后

// UserRegistration.java file
    @Entity 
@Table(name="UserRegistration")
public class UserRegistration {

    @EmbeddedId private UserRegistrationPk data;

    public UserRegistrationPk getData() {
        return data;
    }

    public void setData(UserRegistrationPk data) {
        this.data = data;
    }
}