我正在使用JPA 2.1.2.
我想用where子句执行select查询.where语句应该比较(不等于)存储在数据库(字符串)中的枚举.
@Entity
@Table(name = "MY_ENTITY")
public class MyEntity implements Serializable {
@Column(name = "REMINDER_STATE")
@Enumerated(EnumType.STRING)
private ReminderStage reminderStage;
...
}
class DaoImpl{
....
@Override
public List<MyEntity> findAll(ReminderStage stage) {
return em.createQuery("SELECT c FROM MyEntity c WHERE c.reminderStage != :reminderStage", MyEntity.class)
.setParameter("reminderStage", stage).getResultList();
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我执行查询时,我得到以下异常:
...
[28.07.14 08:27:07:910 CEST] 0000004e SystemErr R Caused by: <openjpa-2.1.2-SNAPSHOT-r422266:1530146 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter 'SELECT c FROM CertInfo c WHERE c.reminderStage != :reminderStage'. Error message: …Run Code Online (Sandbox Code Playgroud) 我正在使用Primefaces 5.0来创建动态数据表.
我的DataObject有一些必需的字段和一个可选的"tupel"列表(键值对).可选列表的大小可能不同.因此,我需要一个动态机制来显示Primefaces.DataTable中的DataObject列表.
我的方法如下:
public class DataObject {
private String staticval1;
private String staticval2;
private List<Tupel> optionalValues;
// .. getter, setter, hashCode, toString.....
}
public class Tupel{
private String id;
private String value;
}
@ManagedBean
@ViewScoped
public class TableOverviewBean {
private List<DataObject> data;
@EJB
private IMyDao myDao;
@PostConstruct
public void init() {
data = myDao.findAll();
}
public List<DataObject> getData() {
return data;
}
public void setData(List<DataObject> data) {
this.data = data;
}
}
Run Code Online (Sandbox Code Playgroud)
<h:form>
<p:dataTable value="#{tableOverviewBean.data}" var="data">
<p:column headerText="static1">
<h:outputText …Run Code Online (Sandbox Code Playgroud) 今天我想尝试新的PrimeFaces版本3.4.RC1.对于图表,有一个名为datatipFormat的新属性.
我想只在折线图中显示值(y轴)作为datatip.像这样:
<p:lineChart value="#{...}" datatipFormat="y-value"/>
Run Code Online (Sandbox Code Playgroud)
我该怎么做只显示这个?我找不到一个带有模板String的例子.
最好的问候Veote
我正在使用PrimeFaces 4.0的JSF 2.
我有一个带有一些输入和验证的表单.从对话框中选择实体时,某些字段可能会自动填充.在我提交整个表单(并验证)之前选择实体时,这很好用.但是当我在验证后选择实体时,组件的更新不起作用.
JSF页面:
<h:form id="form">
<p:inputText id="id" value="#{bean.user.id}" required="true"
onclick="PF('usersDialog').show()" />
<p:inputText id="name" value="#{bean.user.name}" required="true"
onclick="PF('usersDialog').show()" />
<p:commandButton value="submit" action="#{bean.submit}" update=":form" />
</h:form>
<p:dialog widgetVar="usersDialog">
<h:form>
<p:dataTable value="#{bean.users}" var="user">
<p:column>
<p:commandButton value="choose" onclick="PF('usersDialog').hide()"
process="@this" action="#{bean.select(user)}" update=":form" />
</p:column>
<p:column>
<h:outputText value="#{user.name}" />
</p:column>
</p:dataTable>
</h:form>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
我知道它的JSF生命周期,但我无法解决它.那么在从对话框中选择新实体时,如何在验证失败后更新表单?
提前致谢.
我需要一个hashCodeJava实现,它忽略了我的类中字段的顺序Edge.Node首先可能是Node第二个,第二个可能是Node第一个.
这是我的方法取决于顺序:
public class Edge {
private Node first, second;
@Override
public int hashCode() {
int hash = 17;
int hashMultiplikator = 79;
hash = hashMultiplikator * hash
+ first.hashCode();
hash = hashMultiplikator * hash
+ second.hashCode();
return hash;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法计算一个哈希值,这个哈希值对于以下边缘是相同但唯一的?
Node n1 = new Node("a");
Node n2 = new Node("b");
Edge ab = new Edge(n1,n2);
Edge ba = new Edge(n2,n1);
Run Code Online (Sandbox Code Playgroud)
ab.hashCode() == ba.hashCode()应该是true.
I want to call a local Stateless-EJB from on ejb project from another singleton-EJB in another ejb-project. Both EJB-Projects are in the same ear file. The Application Server is a WebSphere Application Server 8.0.0.1.
First EJB 3.1-Project (PersistenceEJB.jar):
Interface
@Local
public interface TaskInfoDao extends DaoTemplate<TaskInfo> {
public int deleteAll();
}
Run Code Online (Sandbox Code Playgroud)
The Stateless Bean:
@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class TaskInfoDaoImpl implements TaskInfoDao {
private static final long serialVersionUID = 1L;
@PersistenceContext(unitName = "MyDatasource")
private EntityManager em;
@Override
public int deleteAll() {
Query …Run Code Online (Sandbox Code Playgroud) 我正在尝试在部署在 IBM WebSphere Application Server 8.0.0.8 上的 JSF 应用程序中使用一些错误页面。它们在 中声明如下web.xml:
<error-page>
<error-code>403</error-code>
<location>/error403.jsp</location>
</error-page>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/expired.xhtml</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error500.xhtml</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
但是,它们似乎不起作用。例如,当我ViewExpiredException在重新启动应用程序后得到 a 时,我没有重定向到错误页面,但我SRVE0260E在服务器日志中收到以下错误:
Error Page Exception
SRVE0260E: The server cannot use the error page specified for your application to handle the Original Exception printed below.
Original Exception:
Error Message: javax.servlet.ServletException: /help.xhtmlNo saved view state could be found for the view identifier: /help.xhtml
Error Code: 500
Target Servlet: Faces Servlet
Error Stack:
javax.faces.application.ViewExpiredException: …Run Code Online (Sandbox Code Playgroud) 我在带有MySQL 5.0 DB的WebSphere Application Server 8上使用OpenJPA 2.2.0.
我有一个对象列表,我想合并到数据库中.
就像是:
for (Object ob : list) {
Long start = Calendar.getInstance().getTimeInMillis();
em = factory.createEntityManager();
em.getTransaction().begin();
em.merge(ob);
em.getTransaction().commit();
em.close();
Long end = Calendar.getInstance().getTimeInMillis();
Long diff = end - start;
LOGGER.info("Time: " + diff);
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个循环时,我需要大约300-600毫秒来合并一个对象.当我删除行"em.merge(ob);"时 然后我需要"0"毫秒来迭代1个列表对象.
所以我的问题是:我可以做些什么来缩短合并一个对象的时间?
谢谢!
我想离开加入2桌.所以左表的所有属性都应该显示在结果表中,无论它是否可以与其他表连接.
当我这样做时,我没有得到预期的结果
week_table:
date kw note
---------- -- ----
2012-04-01 0 NULL
2012-04-02 0 NULL
fact_table:
id number_of_application number_of_cluster number_of_jvm number_of_node number_of_was fk_wasversion fk_date fk_domain fk_osname fk_osarch fk_osversion fk_stage
-- --------------------- ----------------- ------------- -------------- ------------- ------------- ---------- --------- --------- --------- ------------ --------
1 114 8 80 18 18 6.0 2012-04-01 domain1 Linux sparc 2 stage1
2 114 8 80 18 18 6.0 2012-04-02 domain1 Linux sparc 2 stage1
3 114 8 80 18 18 6.0 2012-04-01 domain1 AIX sparc 2 …Run Code Online (Sandbox Code Playgroud) 我需要在Apache Openjpa 2的select子句中执行子查询.JPA是否支持SELECT子句中的子查询?
我的查询是这样的:
SELECT t.date, t.value,
(SELECT COUNT(DISTINCT t2.value2) FROM table t2 WHERE t2.date = t.date)
FROM table t
WHERE ...
Run Code Online (Sandbox Code Playgroud)
当我执行我的查询时,我得到一个类强制转换异常:
Exception in thread "main" <openjpa-2.1.1-SNAPSHOT-r422266:1141200 nonfatal user error> org.apache.openjpa.persistence.ArgumentException:
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:872)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794)
at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:315)
at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:331)
Caused by: java.lang.ClassCastException: org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect incompatible with org.apache.openjpa.jdbc.sql.SelectImpl
at org.apache.openjpa.jdbc.sql.SelectImpl.setParent(SelectImpl.java:579)
at org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.newSelect(SelectConstructor.java:147)
at org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.evaluate(SelectConstructor.java:87)
at org.apache.openjpa.jdbc.kernel.exps.SubQ.appendTo(SubQ.java:209)
at org.apache.openjpa.jdbc.kernel.exps.SubQ.appendTo(SubQ.java:203)
at org.apache.openjpa.jdbc.kernel.exps.SubQ.newSQLBuffer(SubQ.java:167)
at org.apache.openjpa.jdbc.kernel.exps.SubQ.selectColumns(SubQ.java:153)
at org.apache.openjpa.jdbc.kernel.exps.SubQ.select(SubQ.java:148)
at org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.select(SelectConstructor.java:372)
at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.populateSelect(JDBCStoreQuery.java:295)
at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.access$100(JDBCStoreQuery.java:86)
at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery$1.select(JDBCStoreQuery.java:267)
at org.apache.openjpa.jdbc.sql.LogicalUnion.select(LogicalUnion.java:297)
at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.populateUnion(JDBCStoreQuery.java:265)
at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeQuery(JDBCStoreQuery.java:211)
at …Run Code Online (Sandbox Code Playgroud) 我在Eclipse Juno中使用WebSphere Application Server V8.5 Liberty Profile.我配置了我的AppServer(server.xml)并添加了jsp-2.2,jsf2.0,localConnector-1.0和servlet-3.0功能.
当我部署我的项目并在浏览器中打开JSP-Page时,一切都很顺利.但是当我想打开一个JSF-Page时,我得到以下异常:
[ERROR ] An error occured while initializing MyFaces: org.apache.myfaces.spi.impl.DefaultFacesConfigurationMergerFactory cannot be cast to org.apache.myfaces.spi.FacesConfigurationMergerFactory
[ERROR ] Uncaught.init.exception.thrown.by.servlet
[ERROR ] SRVE0266E: Error occured while initializing servlets: javax.servlet.ServletException: SRVE0207E: Uncaught initialization exception created by servlet
at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:382)
at com.ibm.ws.webcontainer.osgi.servlet.ServletWrapper.init(ServletWrapper.java:83)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadOnStartupCheck(ServletWrapper.java:1353)
at com.ibm.ws.webcontainer.webapp.WebApp.doLoadOnStartupActions(WebApp.java:862)
at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinally(WebApp.java:831)
at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:753)
at com.ibm.ws.webcontainer.webapp.WebApp.initialize(WebApp.java:5694)
at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost.createRunnableHandler(DynamicVirtualHost.java:220)
at com.ibm.ws.http.internal.VirtualHostImpl.discriminate(VirtualHostImpl.java:165)
at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:157)
at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:444)
at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:378)
at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:278)
at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:249)
at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:174)
at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:83)
at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:502)
at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:550)
at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:899)
at …Run Code Online (Sandbox Code Playgroud) 我在WebSphere Application Server 8上使用JSF 2.0(Apache myFaces).
我有一个bean,其中包含一个图表列表(jquery HighCharts的数据).对于每个图表,我需要一些JSF组件+一个写为CompositeCompoent的Highchart Wrapper(在这里查看)
所以我使用jsf 2的ui:repeat函数,如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:hc="http://java.sun.com/jsf/composite/chartComponents"
template="/template/mytemplate.xhtml">
<ui:define name="content">
<ui:repeat value="#{chartCtrl.charts }" var="chart" id="chartrepeat" varStatus="chartStatus">
#{chartStatus.index }
<h:form id="chartform_#{chartStatus.index }">
<!-- some jsf select stuff-->
</h:form>
#{chartStatus.index }
<hc:Chart title="Statistics" id="hcchart_#{chartStatus.index }"
<!-- here's the problem-->
<ui:repeat value="#{chart.series }" var="serie">
<hc:ChartSeries series="#{serie.data }" />
</ui:repeat>
</hc:Chart>
#{chartStatus.index }
</p:panel>
</ui:repeat>
<h:outputScript library="js" name="highcharts.js" />
<h:outputScript library="js/modules" name="exporting.js" />
<h:outputScript library="js" name="jquery-1.9.1.min.js" …Run Code Online (Sandbox Code Playgroud) 我有一个HashSet,它在Graph中存储了一些边.每个Edge都有两个节点.
在图表未定向的情况下,添加副本应该失败:
Edge a = new Edge(new Node("aa"), new Node("bb"));
Edge duplicate = new Edge(new Node("aa"), new Node("bb"));
Run Code Online (Sandbox Code Playgroud)
但是在下面的例子中它起作用:
System.out.println(a.equals(duplicate));
Set<Edge> sete = new HashSet<Edge>();
System.out.println(sete.contains(a));
System.out.println(sete.add(a));
System.out.println(sete.contains(duplicate));
System.out.println(sete.add(duplicate));
Output:
true
false
true
false
true
Run Code Online (Sandbox Code Playgroud)
编辑:好的,现在我添加了一个hashCode方法,适用于定向边.有人可以帮我计算无向边的哈希吗?
public class Edge {
private Node first, second;
@Override
public /boolean equals(Object ob) {
if (ob instanceof Edge) {
Edge edge = (Edge) ob;
if (first.equals(edge.first)
&& second.equals(edge.second)
|| first.equals(edge.second)
&& second.equals(edge.first))
return true;
}
return false;
}
@Override
public int hashCode() {
int …Run Code Online (Sandbox Code Playgroud) java ×7
jsf-2 ×5
primefaces ×3
hashcode ×2
mysql ×2
sql ×2
websphere ×2
charts ×1
comparison ×1
datatable ×1
ejb-3.1 ×1
el ×1
enums ×1
java-ee ×1
jpa ×1
jpa-2.0 ×1
jpql ×1
left-join ×1
openjpa ×1
performance ×1
set ×1
subquery ×1
validation ×1
websphere-8 ×1