gpt4 book ai didi

grails - Grails域类保存NULL id属性;运行Web应用程序时导致错误

转载 作者:行者123 更新时间:2023-12-02 15:32:41 24 4
gpt4 key购买 nike

在此项目中,我尝试保存Yahoo Finance URL API返回的数据。要访问的URL是“http://ichart.yahoo.com/table.csv?s=GOOG&a=0&b=1&c=2000&d=0&e=31&f=2010&g=w&ignore=.csv”。我试图在我的StockQuote.stockInfo参数中将返回的数据另存为String。

保存StockQuote实例对象时出现以下错误:

Error 500: Internal Server Error
URI: /StockScreenerSD/stockQuote/tickerLookup
Class: org.h2.jdbc.JdbcSQLException
Message: NULL not allowed for column "STOCK_QUOTE"; SQL statement: insert into stock_quote (id, version, date_created, stock_info, ticker) values (null, ?, ?, ?, ?) [23502-164]

Around line 26 of grails-app/controllers/org/grails/finance/StockQuoteController.groovy
23:// def url = ("http://download.finance.yahoo.com/d/quotes.csv?s=" + stockQuote.ticker + "&f=xsna2t8pj1a").toURL()
24: def url = ("http://ichart.yahoo.com/table.csv?s=" +stockQuote.ticker+ "&a=0&b=1&c=2000&d=0&e=31&f=2010&g=w&ignore=.csv").toURL()
25: stockQuote.stockInfo = url.text.toString()
26: stockQuote.save()(flush: true)
27: def stockQuoteList = stockQuoteList()
28: render template: 'usedTickers', collection: stockQuoteList, var: 'stockData'
29: }

尝试保存操作的我的 Controller 代码如下:
package org.grails.finance


import grails.plugins.springsecurity.Secured
@Secured('IS_AUTHENTICATED_FULLY')

class StockQuoteController {
// def scaffold = true

def index() {
redirect (action:'getTicker')
}

def getTicker() {
def listing = stockQuoteList()
return [stockQuoteList: listing] // this is a map. key=>value
}

def tickerLookup = {
def stockQuote = new StockQuote(ticker: params.ticker)
def url = ("http://ichart.yahoo.com/table.csv?s=" +stockQuote.ticker+ "&a=0&b=1&c=2000&d=0&e=31&f=2010&g=w&ignore=.csv").toURL()
stockQuote.stockInfo = url.text.toString()
stockQuote.save()(flush: true)
def stockQuoteList = stockQuoteList()
render template: 'usedTickers', collection: stockQuoteList, var: 'stockData'
}

private stockQuoteList() {
StockQuote.list()
}

最佳答案

我希望这是我的最后编辑。如果您有一个漫长的工作周,则星期五的证明无效。 :)好的,这是必须的设置,它对我有用:

//Domain class StockQuote
class StockQuote {
String ticker
String stockInfo

static mapping = {
stockInfo type: "text" //You have to set the type since the info is CLOB
}
}

//Controller Action
def tickerLookup = {
def stockQuote = new StockQuote(ticker: params.ticker)
def url = ("http://ichart.yahoo.com/table.csv?s=" +stockQuote.ticker+ "&a=0&b=1&c=2000&d=0&e=31&f=2010&g=w&ignore=.csv").toURL()
stockQuote.stockInfo = url.text.toString()
stockQuote.save(flush: true) //Look at how flush is used in save
def stockQuoteList = stockQuoteList()
render template: 'usedTickers', collection: stockQuoteList, var: 'stockData'
}

上面的代码对我有用,我能够将较大的CLOB响应从URL保存到表中。看看我的 test

关于grails - Grails域类保存NULL id属性;运行Web应用程序时导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16862645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com