我正在尝试使用CakePHP paginate()方法在SQL查询中使用"HAVING"子句.
经过一些搜索,看起来这是无法通过Cake的paginate()/ find()方法实现的.
我的代码看起来像这样:
$this->paginate = array(
'fields' => $fields,
'conditions' => $conditions,
'recursive' => 1,
'limit' => 10,
'order' => $order,
'group' => 'Venue.id');
Run Code Online (Sandbox Code Playgroud)
其中一个$字段是别名"distance".我想在距离<25时添加查询(例如,距离<25).
到目前为止,我已经看到了两个解决方法,不幸的是,这两个方法都不适合我 我见过的两个是:
1)在"group"选项中添加HAVING子句.例如'group' => 'Venue.id HAVING distance < 25'.当与分页结合使用时,这似乎不起作用,因为它会混淆执行的初始计数查询.(即尝试SELECT distinct(Venue.id HAVING distance < 25)哪个显然是无效的语法.
2)在WHERE条件之后添加HAVING子句(例如WHERE 1 = 1 HAVING field > 25)这不起作用,因为看起来HAVING子句必须在 Cake生成的查询中的WHERE条件之后放置的组语句之后.
有没有人知道使用CakePHP的find()方法做到这一点的方法?我不想使用query(),因为这会涉及大量的返工,也意味着我需要实现自己的分页逻辑!
提前致谢
我开始了一个项目,我必须使用外部svn(我在代理下).当我把url放在配置项目中时,Jenkins无法访问存储库,所以我填写了凭证(存储库URL,用户名和密码),但这里是错误:
FAILED: svn: E175002: OPTIONS /.../trunk/www failed
org.tmatesoft.svn.core.SVNException: svn: E175002: OPTIONS /.../trunk/www failed
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:304)
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:289)
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:277)
at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:696)
at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:619)
at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:103)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1018)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.testConnection(DAVRepository.java:99)
at hudson.scm.SubversionSCM$DescriptorImpl.postCredential(SubversionSCM.java:1968)
at hudson.scm.SubversionSCM$DescriptorImpl.doPostCredential(SubversionSCM.java:1913)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:241)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:241)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:574)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:659)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:488)
at org.kohsuke.stapler.Stapler.service(Stapler.java:162)
at …Run Code Online (Sandbox Code Playgroud) 我使用PreparedStatement具有2000多个参数标记构建大型数据库调用.
我得到这个错误
Caused by: java.sql.SQLException: Prepared or callable statement has more than 2000 parameter markers.
at net.sourceforge.jtds.jdbc.SQLParser.parse(SQLParser.java:1139)
at net.sourceforge.jtds.jdbc.SQLParser.parse(SQLParser.java:156)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.<init>(JtdsPreparedStatement.java:107)
Caused by: java.sql.SQLException: Prepared or callable statement has more than 2000 parameter markers.
Run Code Online (Sandbox Code Playgroud)
我尝试搜索API文档和谷歌但无法找到如何配置它.
有谁知道是否有可能达到这个限制?我知道这将是一个缓慢的数据库调用,但现在这很好.
从长远来看,这也会给我带来任何问题,我最好分批运行吗?
我想将我的CakePHP应用程序从2.2版升级到2.3版,我该怎么办?
是否足以覆盖lib文件夹?我检查了差异并注意到app文件夹中也有变化,所以不清楚是否需要更新这些变化.
迁移指南没有关于如何执行升级的信息.
我正在尝试使用CakePHP的表单助手来生成一些输入元素.
我想要生成的HTML是:
<div class="formRow">
<label>LabelText:</label>
<div class="formRight">
<input name="data[User][email_address]" type="text" value="">
</div>
<div class="clear"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我已经看过Cake文档(使用2.1),我找不到有关如何执行此操作的足够信息.
看起来我需要在输入法上使用format选项,但无法弄清楚如何正确使用它.特别关注输入字段周围的div,上面有一个类名.
我试过这样的事:
echo $this->Form->input('email_address', array(
"input" => array('attributes' => array('wrap' => 'div','class' => 'formRight'))));
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何标记,只是抛出这个错误:注意(8):数组到字符串转换[CORE\Cake\View\Helper.php,第459行]
所以我的问题是如何让这个表单助手创建该标记?
任何帮助非常感谢
我有一个非常奇怪的行为,我在SQL DB中无法理解(我正在使用MySQL 5.5.8):
我在表中有一个varchar(10)的名字:joe.
如果像这样运行一个sql:
SELECT ID FROM `names` WHERE `name` = 'joe '
Run Code Online (Sandbox Code Playgroud)
我得到一个结果:乔,但这是错的,因为在表中我没有任何'乔'(最后有一个空格.我只有'乔'(没有空格)
但是,如果我执行:
SELECT ID FROM `names` WHERE `name` LIKE 'joe '
Run Code Online (Sandbox Code Playgroud)
我得到了我的期望:没有.据我所知=应该是"精确"匹配,而像是更松散,能够使用子字符串和%.
我错过了什么?
我正在使用JAX-WS创建一个Web服务(我使用Java到WSDL方法创建它).
我无法按照我的要求让我的例外工作.
我创建了以下异常类:
@WebFault
public class MyWebServiceException extends SOAPFaultException {
private static final long serialVersionUID = 8234753208722614057L;
protected MyWebServiceException(SOAPFault fault) {
super(fault);
}
protected MyWebServiceException(SOAPFault fault, Throwable throwable) {
this(fault);
super.setStackTrace(throwable.getStackTrace());
}
}
Run Code Online (Sandbox Code Playgroud)
这允许我在SOAP响应中包含以下内容:
<faultcode>E0010</faultcode>
<faultstring>Invalid Report</faultstring>
<detail>
<ns2:exception class="com.example.web.common.exceptions.MyWebServiceException" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false" xmlns:ns2="http://jax-ws.dev.java.net/">
<message>Invalid Report</message>
<ns2:stackTrace>
<ns2:frame class="com.example.web.common.exceptions.ExceptionHandler" file="ExceptionHandler.java" line="34" method="getWebException"/>
Run Code Online (Sandbox Code Playgroud)
但是,因为我的异常是SOAPFaultException扩展的RuntimeException,所以它没有被添加到WSDL中,因此当服务的用户生成其客户端存根时,不包括异常.
有谁知道如何创建此异常以给我预期的输出(即包括faultcode和faultstring),但也出现在WSDL中(我想它需要是一个经过检查的异常)
我搜索了高低,想出了我已经拥有的东西!
我需要CountDown Days从一个日期到第二个日期
例如
CURRENT_DATE:3/1/2013 NEXT_DATE:21/01/2013
然后它显示::17 DAYS LEFT
我实现了这样的代码
String inputDateString = "01/22/2013";
Calendar calCurr = Calendar.getInstance();
Calendar calNext = Calendar.getInstance();
calNext.setTime(new Date(inputDateString));
if(calNext.after(calCurr))
{
long timeDiff = calNext.getTimeInMillis() - calCurr.getTimeInMillis();
int daysLeft = (int) (timeDiff/DateUtils.DAY_IN_MILLIS);
dni.setText("Days Left: "+daysLeft);
}
else
{
long timeDiff = calCurr.getTimeInMillis() - calNext.getTimeInMillis();
timeDiff = DateUtils.YEAR_IN_MILLIS - timeDiff;
int daysLeft = (int) (timeDiff/DateUtils.DAY_IN_MILLIS);
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来实现这些?
我对Java中的信号量概念并不十分清楚并试图理解它.
我在阅读oracle docs(http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html)和其他一些页面之后的理解,它类似于一个带有计数的锁许可数量.
它通常用于创建资源池.在这里我感到困惑,还有ThreadPoolExecutor可以给我一个线程池.那么区别是什么呢?在哪种情况下使用哪一个?
我在使用 SVN 作为 SCM 通过 Jenkins 运行 maven 发布插件时遇到问题。
在检查大型项目时,我收到以下错误,我搜索了高低的分辨率,但还没有找到任何东西,这似乎是使用 SVN Kit 的 Java SVN 客户端的问题。
svn: E175002: SSL peer shut down incorrectly
12:37:17 at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
12:37:17 at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
12:37:17 at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:777)
12:37:17 at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:382)
12:37:17 ... 34 more
12:37:17 Caused by: svn: E175002: REPORT request failed on '/svn/mx/!svn/vcc/default'
12:37:17 at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:208)
12:37:17 at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:775)
12:37:17 ... 35 more
12:37:17 Caused by: svn: E175002: SSL peer shut down incorrectly
12:37:17 at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:109)
12:37:17 at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:526)
12:37:17 ... 35 more
12:37:17 …Run Code Online (Sandbox Code Playgroud)