我正在使用Grails 1.2.4.我想知道如何通过"countDistinct"(降序)和在投影中使用groupProperty进行排序.
这是我的域名:
class Transaction {
static belongsTo = [ customer : Customer, product : Product ]
Date transactionDate = new Date()
static constraints = {
transactionDate(blank:false)
}
}
class Product {
String productCode
static constraints = {
productCode(blank:false)
}
}
Run Code Online (Sandbox Code Playgroud)
在MySQL术语中,这就是我想要的:
select
product_id,
count(product_id)
from
transaction
group by
product_id
order by
count(product_id) desc
Run Code Online (Sandbox Code Playgroud)
总的来说,我想获得一个产品列表(或只是产品ID),按产品的交易数量(降序)排序
这是我的猜测:
def c = Transaction.createCriteria() def transactions = c.list {
projections {
groupProperty("product")
countDistinct("product")
}
maxResults(pageBlock)
firstResult(pageIndex) }
def products = transactions.collect { it[0] } …Run Code Online (Sandbox Code Playgroud) 我正在使用spring security,我需要在控制器中获取User域对象.
如果我打电话SpringSecurityService.getPrincipal(),我会找回一个类型的对象org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser.但是,我正在寻找的是我在我Config.groovy喜欢的用户域对象:
grails.plugins.springsecurity.userLookup.userDomainClassName = 'project.auth.User'
Run Code Online (Sandbox Code Playgroud)
我怎样才能最好地获取用户域对象?
如果我向一个类添加一个元方法,我希望它会出现在Class.metaClass.metaMethods.但事实似乎并非如此.特别是,如果我这样做:
class Example {
def realFoo() { "foo" }
}
Example.metaClass.metaFoo = { -> "foo" }
def reals = Example.metaClass.methods*.name.grep{it.contains("Foo")}
def metas = Example.metaClass.metaMethods*.name.grep{it.contains("Foo")}
println "reals = $reals, metas = $metas"
Run Code Online (Sandbox Code Playgroud)
我希望输出reals = [realFoo], metas = [metaFoo],但实际上我得到了reals = [realFoo, metaFoo], metas = [].
看起来新的元方法存储在方法中,而不是metaMethods.那么,metaClass.methods和之间有什么区别metaClass.metaMethods?
我想查看默认hsqldb内存数据库的grails模式,但是当我使用SquirrelSQL或DbVisualizer连接到内存数据库时userid: sa, password: (nothing),我只看到两个模式:
INFORMATION_SCHEMA
PUBLIC
Run Code Online (Sandbox Code Playgroud)
并且都不包含我的域表.这是怎么回事?
我有域"country",在list.gsp上我有搜索块和输入字段.第一个问题是,当我尝试在我的列表上使用paginate时总是显示所有结果,在这种情况下我设置了解决方案并且我只发送了10个值用于显示(如果你知道另一个解决方案请告诉我).我的搜索看起来像这样
def search = {
if(query){
def srchResults = searchableService.search(query, params)
def result = Country.executeQuery("select new map(a.name as name, a.datacenter as datacenter) from Country a where a.name like '%"+ params.q + "%'")
if (params.offset)
{
x = params.offset.toInteger()
y = Math.min(params.offset.toInteger()+9, result.size()-1)
} else
{
x = 0
size = result.size() - 1
y = Math.min(size, 9)
}
def q=params.q
[countryInstanceList: result.getAt(x .. y), countryInstanceTotal:result.size(), q:params.q]
}else{
redirect(action: "list")
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有另一个问题,当我按下一页然后我的搜索字段中的参数是清理,结果为空.我试图将字段值作为参数发送,但我做错了.
我的搜索页面如下:
<g:form action="search">
<div class="search" >
Search Country …Run Code Online (Sandbox Code Playgroud) 我正在处理grails应用程序.我们使用cobertura生成代码覆盖率报告.现在我想修改grails项目,如果代码覆盖率小于90%,则构建应该失败.我怎样才能在grails中实现这一目标?
我正在java中为现有程序编写测试工具.作为其中的一部分,我需要生成一个Diffie Hellman密钥对,并以其原始(即未编码的字节)形式将公钥传递给另一个程序.
我可以使用以下代码成功使用密钥对:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DiffieHellman");
kpg.initialize(512);
KeyPair dkp = kpg.generateKeyPair();
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法检索键的原始字节值:-(调用dkp.getPublic().getEncoded()返回一个字节数组,但它的键是x509编码格式.
我有三种可能的前进方式:
但我不知道如何去做任何一个(哪个会变得最好)?
任何帮助或建议将不胜感激!
在 Grails 2.3.1 中执行“run-app”时如何将 Java 系统属性传递给 JVM?运行“grailsw run-app”时,会启动两个 JVM。Grails 控制台和运行我的 Grails 应用程序的 tomcat 容器。我曾尝试将它们附加在 Grails 目标命令之间和前面。我有一种感觉,我需要修改一个脚本。
501 640 622 0 9:39AM ttys000 1:20.20 /Library/Java/Home/bin/java -server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 ... --conf /Users/hbrien/Software/grails-2.3.1/conf/groovy-starter.conf --classpath run-app
501 661 640 0 9:40AM ttys000 1:50.24 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -Xmx1024M -Xms1024M -XX:MaxPermSizeDgrails=25 true -Dgrails.build.execution.context=/private/var/folder -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=profile=grails;cacheDir=/Users/hbrien/.grails/2.3.1 org.grails.plugins。 tomcat.fork.ForkedTomcatServer
好的,我正在尝试从以下格式转换日期字符串:
2014-01-21 00:00:00
Run Code Online (Sandbox Code Playgroud)
至
01/21/2014
Run Code Online (Sandbox Code Playgroud)
我尝试了很多变化,并且崩溃和燃烧.问题是要测试我必须创建脚本,在Bonita(BPM软件)的过程中导出它,导入它然后创建一些案例.这一切都需要很长时间.
希望有人知道如何做到这一点.
还有,那里有一个简单的常规编辑器吗?这将有助于我学习如何快速编写groovy.
我是 Java 新手,所以这可能与 AWS lambda 根本无关。然而,lambda 对输入/输出对象采取了如此自由的态度,我假设它是这里的罪魁祸首。
我正在构建我的第一个 lambda 函数,并希望返回一个简单的 JSON 结构(在此示例中进一步简化):
{
"document" : "1",
"person" : { "name" : "John Doe" }
}
Run Code Online (Sandbox Code Playgroud)
但是,当 lambda 序列化 JSON 时,它总是将“person”设置为空白对象!
{
"document": "1",
"person": {}
}
Run Code Online (Sandbox Code Playgroud)
这是我的完整代码:
- test1.java
package handler_test;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class test1 implements RequestHandler<String, ResponseClass> {
@Override
public ResponseClass handleRequest(String input, Context context) {
return new ResponseClass();
}
}
- ResponseClass.java
package handler_test;
import org.json.JSONException;
import org.json.JSONObject;
public class ResponseClass {
String document;
JSONObject …Run Code Online (Sandbox Code Playgroud) grails ×6
groovy ×3
java ×2
aws-lambda ×1
cobertura ×1
criteria ×1
cryptography ×1
database ×1
date ×1
grails-2.3 ×1
grails-orm ×1
hsqldb ×1
json ×1
pagination ×1
sql ×1