使用@NamedQuery时如何显示日期和字符串

时间:2013-07-26 15:49:47

标签: java hibernate jpa jpa-2.0

我的 @NamedQuery 中有以下Entity

@NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c")

我在DAOImpl班级中使用上述内容

TypedQuery<Customer> q =  entityManager.createNamedQuery(
    "Customer.findAll", Customer.class);

当我在应用程序中显示日期字段时,所有日期值都显示为

2013-07-14 00:00:00.0, 2013-07-28 00:00:00.0等,字符串字段显示为

test.entity.Employee@750d24b2

如何格式化数据库中存储的日期和显示字符串数据?

修改1

<p:column>
    <f:facet name="header">
        <h:outputText value="Employee #" />
    </f:facet>
    <h:outputText value="#{req.empNumber}" />
</p:column>

和实体empNumber中的

声明为

private Employee empNumber;

2 个答案:

答案 0 :(得分:2)

如果您接收test.entity.Employee@750d24b2您没有访问JSF上的String,而是通过JSF EL访问课程。

您应该访问Employee类的字段,例如:

<h:outputText value="#{req.employee.empNumber}" />

这假定req属性包含employee的get / set方法,employee包含empNumber的get / set方法。有了这些访问器,JSF EL应该显示empNumber

的值

为了显示日期,我建议使用JSF标签。

<h:outputText value="#{req.someDate}" >
              <f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
 </h:outputText>

Documentation

答案 1 :(得分:1)

在JSF中将日期显示为格式化字符串与@NamedQuery无关,或者您选择从数据库中获取该日期。无论如何,要显示格式化日期,

<h:outputText value="#{bean.date}" >
    <f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>

替换为实际值和所需模式。

对于Employee,当您使用Object(而不是String)作为h:outputText的值时,将调用该对象的toString()方法。这就是为什么你看到你所看到的。你应该使用员工的财产,比如#{req.employee.empNumber}