有条件地排序导致休眠

时间:2013-04-25 11:25:34

标签: java sql hibernate

以下是我正在使用的表格。有一个User表有一些预定义的列(下面的例子中的'name')和一个Extra Attributes表,用于使架构扩展成为可能。 Extra Attributes表将任何新扩展属性的值存储为键值对('title'和'mobile'是下面示例中的额外属性),'user'列用于连接主User表。这种安排通常适用于大多数操作,但我无法想办法对用户的任何额外属性进行排序。

User Table:
---------------
id        name
============== 
1         jon  
2         harry


Extra attributes table:
--------------------------------
user   attr_key    attr_value
================================
1      title       engineer
1      mobile      111-2222-4444
2      title       manager
2      mobile      111-0000-5555


Result of joining the two tables above(few columns intentionally skipped):
--------------------------------------------
id        name     attr_key    attr_value
============================================
1         jon      title       engineer
1         jon      mobile      111-2222-4444
2         harry    title       manager
2         harry    mobile      111-0000-5555

我正在使用hibernate进行ORM。以下是实体类:

@Entity
public class User {

    private Long id;
    private String name;
    private Set<ExtraAttributes> extraAttributes;

    public String getName() {}

    @OneToMany(mappedBy="user",fetch=FetchType.EAGER)
    public Set<ExtraAttributes> getExtraAttributes() {}

    ... 
}

@Entity
public class ExtraAttribute {

    private Long id;
    private String attrKey;
    private String attrValue;
    private User user;

    ...

    @ManyToOne(optional = false)
    public User getUser() {}

    ...
}

我希望能够通过对应于特定attr_key的attr_value对结果进行排序,比如'title'。问题是,如果我通过attr_value对结果进行排序,那么将考虑所有attr_values,而我只想通过与特定attr_key - 'title'对应的attr_values进行排序。我想通过attr_key和attr_value来排序,但这似乎也没有解决问题。

0 个答案:

没有答案