2012-10-19 56 views
0

我試圖把所有的後序的出來,其中一個子實例存在Grails的拉對象從有許多

我的域如下:

class PostOrder { 

String pOrder 
Date dateCreated 
Picture picture 
Post posts 
Video video 

static hasMany = [children : Child] 
} 

,我嘗試使用的方法得到的對象是:

def getAllInOrder(Child child){ 
def json = PostOrder.findAllByChildren(child, sort: 'dateCreated', order: 'desc') as JSON 
    return json 
} 

我只是從這個sql異常。 任何想法?

也是這些都是我的例外:

util.JDBCExceptionReporter No value specified for parameter 1 
errors.GrailsExceptionResolver SQLException occurred when processing request: [GET] /FYP/profile/appPosts - parameters: 
child: 1 
No value specified for parameter 1. Stacktrace follows: 
java.sql.SQLException: No value specified for parameter 1 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) 
at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2595) 
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2571) 
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2497) 
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2251) 
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) 
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) 
at org.grails.datastore.gorm.GormStaticApi$_methodMissing_closure2.doCall(GormStaticApi.groovy:105) 
at com.fyp.timeline.ProfileController$$ENmIB8q0.getAllInOrder(ProfileController.groovy:636) 
at com.fyp.timeline.ProfileController$$ENmIB8q0.appPosts(ProfileController.groovy:624) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:680) 

回答

1

嘗試

PostOrder.findAllByChildren(child, [sort: 'dateCreated', order: 'desc']) 

雖然我不認爲這將完全解決您的問題,因爲在這種情況下,孩子有望成爲一個列表。試試這個:

PostOrder.all.findAll{it.children.contains(child)} 

好像應該有更好的方式來做到這一點,也許別人可以在環

+1

任何人只要有一個更好的方法來這個答案???。我也陷入了類似的情況 –