昨天晚上,我离开了办公室,运行了一个由我编写的Java程序.它应该使用JDBC连接将大量记录插入到我们的公司数据库(Oracle)中.今天早上当我回来工作时,我看到了这个错误(由try-catch捕获):
java.sql.SQLRecoverableException: I/O Exception: Connection reset
Run Code Online (Sandbox Code Playgroud)
在得到这个问题之前,该程序几乎写了所有记录,但如果它发生得很早(我晚上离开办公室几分钟后)怎么办?我无法理解发生了什么,我联系了我的数据库管理员,他说数据库没有特别的问题.
关于发生了什么以及我可以做些什么来避免它的任何想法?
我需要在我的grails web app中为文章实现修订系统.在搜索grails论坛,stackoverflow,grails插件和谷歌搜索互联网后,我最终得到了3个选项:
选项1 - 使用grails Envers插件(请参阅http://code.google.com/p/grails-envers-plugin/).有没有人成功使用它?或者在没有插件的情况下使用Envers(请参阅此处),但如何使其与GORM一起使用?
选项2 - 使用Gvers插件我在这里找到:https://github.com/ziftytodd/gvers.我从来没有听过有人使用它,所以有没有人曾经成功使用它?
选项3 - 内置机制.Weceem为Weceem CMS的任何内容创建了版本控制系统.我可以从代码的逻辑和这个伟大的应用程序的设计中汲取灵感,但它似乎有点矫枉过正,我不喜欢使用非标准的解决方案.
所以我的问题是,你建议我做什么?你有没有使用过这些选项?
非常感谢您的见解.
我使用以下代码以JSON格式呈现数据.
render(contentType:"text/json") {
results = array {
db.eachRow(query) { row ->
def rs = row.toRowResult()
def a = b(rs.name,c,d)
aMap.put("A",a)
pair(aMap)
}
}
if (results) {
status = "OK"
}
else {
status ="Nothing present"
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码以下列格式生成JSON
{
"results": [
{"A":"value1"},
{"A":"value2"},
...................
{"A":"valuen"}
],
"status":"OK"
}
Run Code Online (Sandbox Code Playgroud)
如上所述,数据呈现为对象数组.有没有办法可以将结果数据渲染为元素数组.喜欢
{
"results": [
"value1",
"value2",
...................
"valuen"
],
"status":"OK"
}
Run Code Online (Sandbox Code Playgroud) 我如何OutputStream
使用org.apache.http.impl.client.DefaultHttpClient
?
我想写一个长字符串到输出流.
使用HttpURLConnection
你会像这样实现它:
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
OutputStream out = connection.getOutputStream();
Writer wout = new OutputStreamWriter(out);
writeXml(wout);
Run Code Online (Sandbox Code Playgroud)
有没有使用DefaultHttpClient
类似于我上面的方法?我如何写一个OutputStream
使用DefaultHttpClient
而不是HttpURLConnection
?
例如
DefaultHttpClient client = new DefaultHttpClient();
OutputStream outstream = (get OutputStream somehow)
Writer wout = new OutputStreamWriter(out);
Run Code Online (Sandbox Code Playgroud) 尝试将我的第一个iPhone应用程序提交给Subversion,发现我的xcode project.pbxproj文件中有"代码签名身份"部分.
CODE_SIGN_IDENTITY = "iPhone Developer: my username here...;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: above...";
Run Code Online (Sandbox Code Playgroud)
问题是,在我们的团队中,我们使用绑定到我们设备的不同配置.因此,当其他人想要在设备上运行代码时,他们必须更改此行.我们可以共享一个配置,但这种方式有几个缺点.还有其他方法可以解决吗?即包括代码签名部分到另一个不承诺SVN的文件?
Grails上有一些ENUM的例子(这里也是SO),但我无法得到理想的结果.
解决方案包括1)将ENUM放在src/groovy 域类下的单独 类中
class Offer {
PaymentMethod acceptedPaymentMethod
..
}
Run Code Online (Sandbox Code Playgroud)
src/groovy PaymentMethod
public enum PaymentMethod {
BYBANKTRANSFERINADVANCE('BANKADVANCE'),
BYINVOICE('ByInvoice'),
CASH('Cash'),
CHECKINADVANCE('CheckInAdvance'),
PAYPAL('PayPal'),
String id
PaymentMethod(String id) {
this.id = id
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在发出错误的域类中根本不识别Enum类.看起来这个曾经在版本2之前用于Grails.
我在这里错过了什么吗?如何在Grails的域中使用外部ENUM类?
2)将ENUM放在域类中.
在这种情况下,grails在编译时不会抱怨,但是脚手架不包含ENUM值的任何信息(就像在scaffolding过程中不包含属性acceptedPaymentMethod)示例:
class Offer {
PaymentMethod acceptedPaymentMethod
..
enum PaymentMethod {
BYBANKTRANSFERINADVANCE('BANKADVANCE'),
BYINVOICE('ByInvoice'),
CASH('Cash'),
CHECKINADVANCE('CheckInAdvance'),
PAYPAL('PayPal'),
String id
PaymentMethod(String id) {
this.id = id
}
}
}
Run Code Online (Sandbox Code Playgroud)
检查数据库表的结构,该字段不是ENUM而是简单的VarChar:
| accepted_payment_method | varchar(255) | YES | | NULL | |
Run Code Online (Sandbox Code Playgroud)
是否支持Grails Gorm上的ENUM?
我正在尝试从两个字段构建JSON.说,我有一个对象列表(party),我只需要传递2个项目作为JSON对.
def list = getMyList() //it contains 2 party objects
partyTo = array {
for (i in list) {
x partyId: i.id
y partyName: i.toString()
}
}
Run Code Online (Sandbox Code Playgroud)
JSON字符串是
{
"partyTo": [
{"partyId":12},
{"partyName":"Ar"},
{"partyId":9},
{"partyName":"Sr"}
]
}
Run Code Online (Sandbox Code Playgroud)
当我在客户端提取它时,它被视为4个对象.我想要2个对象,格式如下.
{
"partyTo": [
{"partyId":12, "partyName":"Ar"},
{"partyId":9 , "partyName":"Sr"}
]
}
Run Code Online (Sandbox Code Playgroud)
我得到4个对象,可能是因为我使用数组来构建JSON.我是groovy和JSON的新手,所以不确定正确的语法组合.任何帮助高度赞赏.谢谢.
我的公司正在将我们的版本控制工具从Rational ClearCase更改为Git.我们有以下开发方案,我们很好奇Git是否有适当的模式来实现我们在ClearCase中的相同行为.
以下是关于我们情况的一些基本观点:
- 我们有许多独立的应用程序.我们称之为AppA,AppB和AppC.
- 我们还有一些所有项目共有的文件(构建脚本等).我们称之为工具.
- 对于AppA,AppB或AppC代码的任何给定剪切,我们需要特定的工具代码剪切.
- 我们的大多数开发人员从不修改工具代码.
对于ClearCase,我们这样建模:
组件:app_a,app_b,app_c,工具
项目:AppA,AppB,AppC,工具
Project AppA包括app_a作为读/写组件,工具作为只读组件.
Project AppB包括app_b作为读/写组件和工具作为只读组件.
Project AppC包括app_c作为读/写组件和工具作为只读组件.
项目工具包括作为读/写组件的工具.
App*项目的每个基线都引用app_*和工具组件的基线.当开发人员重新定义到建议的基线时,他们会从两个组件中获取更改.
对于Git,我们认为子模块可能是最接近正确答案的东西.但是,在提取/重新定位存储库时,听起来需要额外的步骤来更新子模块代码.理想情况下,我们希望透明.此外,我们不一定关心从父存储库的角度知道子模块中发生了什么变化; 我们只关心整个子模块的某个时间点.
根据我的阅读,在Oracle中存储JavaUUID
RAW(16)
的首选方法是在列中.当我建议将其用于我的DBA时,他评论说这种RAW
类型在Oracle 8i中被弃用,并提供此页面作为证据.但是,从我在该页面上看到的内容,LONG RAW
已弃用,但不是RAW
.我找到了一些其他人提出类似问题的地方,但还没有找到明确的答案.在最近的Oracle发行说明中似乎还有许多 对RAW
数据类型的引用,这使我相信仍然支持该类型.任何人都可以提供权威的答案,最好是有来自Oracle的适当证据吗?
我有两个具有1:n关系的域类:
import Action
class Task {
Action actionParent
String taskName
}
Run Code Online (Sandbox Code Playgroud)
和
class Action {
String actionName
}
Run Code Online (Sandbox Code Playgroud)
我有“任务名称”列的“任务”列表,我想按Action.actionName对该列进行排序。现在,我正在使用createCriteria()方法[我需要使用它,因为我有更多的逻辑进行过滤和排序...],但是我只能按“ Action.id”进行排序。该方法如下所示:
def criteria = Task.createCriteria();
taskList = criteria.list {
if(parameters.max != null)
maxResults(parameters.max)
if(parameters.offset != null)
firstResult(new Integer(parameters.offset))
if(parameters.sort != null && parameters.order)
order(parameters.sort, parameters.order)
}
Run Code Online (Sandbox Code Playgroud)
是否可以通过关系属性对域类数据进行排序?
感谢您的重播,
马泰奥
grails ×5
grails-orm ×2
hibernate ×2
java ×2
json ×2
oracle ×2
auditing ×1
clearcase ×1
deprecated ×1
enums ×1
git ×1
httpclient ×1
ioexception ×1
iphone ×1
outputstream ×1
provisioning ×1
sql ×1
svn ×1
uuid ×1
versioning ×1
xcode ×1