【问题标题】:hashmap mapped to jpa - playframework映射到 jpa 的 hashmap - playframework
【发布时间】:2012-09-12 05:46:16
【问题描述】:

这是我的表格示例

CREATE TABLE elements (
 elementname,
 displaytext
)  

我如何使用 jpa 并填充 hashmap,以便我可以将其传递给控制器​​查看

HashMap<String, String> hm = new HashMap<String, String>();

render(hm);

在视图中我想遍历并根据元素名称获取显示文本

不是 100% 确定这是否是一种矫枉过正或是否存在更简单的方法。遇到了这个article

更新1: 播放框架 1.2.4

【问题讨论】:

  • 何不创建一个 Element 类并将其映射到元素表。在您的案例中使用地图对您有什么好处?你的播放框架版本是多少?
  • 请浏览 Play 框架站点中的所有示例。它一定会帮助您理解一切。

标签: playframework playframework-1.x


【解决方案1】:

我认为您不需要为此使用地图,而只需要一个元素列表。如果我错了,请更清楚地解释您要达到的目标。


第一个解决方案

您的模型:

@Entity
public class Element extends Model {
   public String name;
   public String text;
}

在您的控制器中:

public static void findElements(){
   List<Element> elements = Element.findAll();
   render(elements);
}

在您看来:

<ul>
#{list items:elements, as:element}
   <li>Name: ${element.name}, Text: ${element.text}</li>
#{/list}
</ul>

第二个解决方案

否则,如果您需要实际地图,您可以使用上面的模型并在控制器中填充地图:

public static void findElements(){
   List<Element> elements = Element.findAll();
   HashMap<String,String> hm= new HashMap<String,String>();
   for(Element el: elements){
      hm.put(el.name, el.text);
   }
   render(hm);
}

查看:

<ul>
#{list items:hm.KeySet(), as:name}
   <li>Name: ${name}, Text: ${elements.get(name)}</li>
#{/list}
</ul>

第三种解决方案 为您的地图创建一个容器:

@Entity
public class ElementContainer extends Model {
    @ElementCollection(fetch = FetchType.EAGER)
    @MapKeyColumn(name = "name_key", nullable = false)
    public Map<String, String> hm;
}

控制器:

public static void findElements(){
   ElementContainer ec = ElementContainer.find().first();
   Map<String,String> hm = null;
   if(ec!=null)
      hm = ec.hm;
   render(hm);
}

【讨论】:

    猜你喜欢
    • 2019-07-26
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 2011-04-18
    • 2013-04-25
    • 1970-01-01
    相关资源
    最近更新 更多