使用ORM,我可以将带有列a,b,c的数据库表映射到带有带键a,b,c的Map的类吗?

时间:2014-10-23 13:21:22

标签: java sql jpa orm mapping

例如,假设我们有一个DB表这样的人:

|---------------|
|Name|Age|Height|
|---------------|
|Bob | 34|   167|
|Jane| 76|   181|
|Joe | 55|   176|
|---------------|

在Java中使用ORM框架(Hibernate,Spring Data JPA等),我可以将此表映射到这样的类:

public class Person {
  private Map<String, Object> attributes;
  // No other fields!
  ..
}

例如表的第一行将由Person对象表示, attributes 字段等于:

{{"Name" -> "Bob"}, {"Age" -> 34}, {"Height" -> 167}}

如果可能的话,我该怎么做呢?非常感谢!

2 个答案:

答案 0 :(得分:0)

您可以使用反射编写自己的实用程序,通过Java Properties(或getter)编写,并为您构建该地图。

答案 1 :(得分:0)

我认为你无法做到这一点。一种选择是使用constructor expressions来拥有一个&#34;视图对象&#34;使用属性映射,并从查询返回,但您仍然必须将普通实体映射到db表。在这种情况下,您的查询看起来像这样

select new my.package.PersonVO(p) from Person p...

你只需要在PersonVO中有一个合适的构造函数

public PersonVO(Person person) {
    attributes.put("name", person.getName());
    ...
}