Java 使用@NamedQuery时如何显示日期和字符串
我的Java 使用@NamedQuery时如何显示日期和字符串,java,hibernate,jpa,jpa-2.0,Java,Hibernate,Jpa,Jpa 2.0,我的实体中有以下@NamedQuery: 我在DAOImpl类中使用上述 TypedQuery<Customer> q = entityManager.createNamedQuery( "Customer.findAll", Customer.class); 如何格式化日期和显示存储在数据库中的字符串数据 编辑1 <p:column> <f:facet name="header"> <h:outputText val
实体中有以下@NamedQuery
:
我在DAOImpl
类中使用上述
TypedQuery<Customer> q = entityManager.createNamedQuery(
"Customer.findAll", Customer.class);
如何格式化日期和显示存储在数据库中的字符串数据
编辑1
<p:column>
<f:facet name="header">
<h:outputText value="Employee #" />
</f:facet>
<h:outputText value="#{req.empNumber}" />
</p:column>
如果您收到test.entity。Employee@750d24b2
您没有在JSF上访问字符串,而是通过JSF EL访问类
您应该访问Employee
类上的字段,如:
<h:outputText value="#{req.employee.empNumber}" />
如果您收到test.entity。Employee@750d24b2
您没有在JSF上访问字符串,而是通过JSF EL访问类
您应该访问Employee
类上的字段,如:
<h:outputText value="#{req.employee.empNumber}" />
在JSF中将日期显示为格式化字符串与@NamedQuery无关,也与您选择从数据库获取该日期的方式无关。无论如何,要显示格式化日期
<h:outputText value="#{bean.date}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
替换为实际值和所需模式
对于Employee,当您使用对象(而不是字符串)作为h:outputText的值时,将调用该对象的toString()方法。这就是为什么你看到了你所看到的。您应该使用employee的属性,比如#{req.employee.empNumber}在JSF中将日期显示为格式化字符串与@NamedQuery无关,或者您选择如何从数据库获取该日期。无论如何,要显示格式化日期
<h:outputText value="#{bean.date}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
替换为实际值和所需模式
对于Employee,当您使用对象(而不是字符串)作为h:outputText的值时,将调用该对象的toString()方法。这就是为什么你看到了你所看到的。您应该使用雇员的属性,如#{req.employee.empNumber}发布一个显示字符串的示例,我理解日期,但字符串非常奇怪。@KevinBowersox,因为映射我声明为private employee empNumber这是问题的原因吗?是的,那不是字符串,而是类。您是否使用@OneToOne
或@ManyToOne
注释以创建关联?员工就是员工。这不是一根绳子。因此,当您显示它时,它的toString()
方法被调用。@KevinBowersox是的,我曾注释为@manytone
,并从员工@OneToMany
发布了一个显示字符串的示例,我理解日期,但字符串非常奇怪。@KevinBowersox,因为映射我声明为private empNumber这是问题的原因吗?是的,那不是字符串,而是类。您是否使用@OneToOne
或@ManyToOne
注释以创建关联?员工就是员工。这不是一根绳子。所以当你显示它时,它的toString()
方法被调用。@KevinBowersox是的,我确实注释为@ManyToOne
,并且来自员工@OneToMany
凯文我有私人员工编号
在managedbean和Employee类中,我有employeeNo的getter和setter,但是当我运行我的应用程序时,我得到的是{req.Employee.employeeNo}”:类“test.net.entity.Customer”没有属性“Employee”。
在Customer中需要一个public Employee getEmployee()
方法。这就是“属性”“意思是。Kevin在回答中告诉它:“这假设req属性包含员工的get/set方法。”req
是否属于Customer
类型?如果是这样,Customer
必须有一个Employee
字段(需要建立关联,考虑@OneToMany
,@manytone
等)。Customer
类还必须为Employee
@jbnize提供get/set方法。我知道这不是火箭科学,但我的评论越与你的一致,我就越觉得自己正在发展成为一名更好的程序员。@KevinBowersox非常感谢你的宝贵评论,这是我的错,我对员工和员工编号感到困惑。谢谢。凯文,我有私人雇员编号
在managedbean和Employee类中,我有employeeNo的getter和setter,但是当我运行我的应用程序时,我得到的是{req.Employee.employeeNo}”:类“test.net.entity.Customer”没有属性“Employee”。
在Customer中需要一个public Employee getEmployee()
方法。这就是“属性”“意思是。Kevin在回答中告诉它:“这假设req属性包含员工的get/set方法。”req
是否属于Customer
类型?如果是这样,Customer
必须有一个Employee
字段(需要建立关联,考虑@OneToMany
,@manytone
等)。Customer
类还必须为Employee
@jbnize提供get/set方法。我知道这不是火箭科学,但我的评论越与你的一致,我就越觉得自己正在发展成为一名更好的程序员。@KevinBowersox非常感谢你的宝贵评论,这是我的错,我对员工和员工编号感到困惑。谢谢。
<h:outputText value="#{req.someDate}" >
<f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
</h:outputText>
<h:outputText value="#{bean.date}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>