我正在将GAE数据存储区用于Java应用程序,并存储一些将使用多种语言的文本.在我的servlet中,我首先检查数据存储中是否有任何数据,如果没有,我正在创建一些数据,类似于以下内容:
ArrayList<Lang> list = new ArrayList<Lang>();
list.add(new Lang("EN", "English", 1));
list.add(new Lang("ES", "Español", 0));
//more languages here...
PersistenceManager pm = PMF.get().getPersistenceManager();
for(Lang l : list) {
pm.makePersistent(l);
}
Run Code Online (Sandbox Code Playgroud)
由于这是使用JDO,我想我也应该包括Lang该类的相关部分:
@PersistenceCapable
public class Lang {
@PrimaryKey
private String code;
@Persistent
private String name;
@Persistent
private int popularity;
// getters & setters & constructors...
}
Run Code Online (Sandbox Code Playgroud)
但是,非ASCII字符让我感到悲伤.我已经将我的Eclipse项目设置为使用UTF-8编码而不是默认的Cp1252,所以我认为从这个角度来看我没问题,但是当我使用App Engine数据查看器查看我的数据时,该Español条目变为Español,当我点击它查看它时,我得到500服务器错误.(还有一些其他条目,从右到左的文本根本不会出现在数据查看器中,但一次只出现一个问题......)
我可以在代码中设置字符编码,或指定GAE我存储的数据是UTF-8吗?或者是Eclipse方面的问题,我的Java代码应该做些什么?
java google-app-engine character-encoding google-cloud-datastore
我有一个Oracle表,其数据如下所示:
ID BATCH STATUS
1 1 0
2 1 0
3 1 1
4 2 0
Run Code Online (Sandbox Code Playgroud)
也就是说,ID是主键,每个"批处理"将有多行,每行在STATUS列中都有一个状态代码.还有很多其他专栏,但这些是重要的专栏.
我需要编写一个查询来汇总每个批次的状态代码 ; 在STATUS列中有三个可能的值,0,1和2,我希望输出看起来像这样:
BATCH STATUS0 STATUS1 STATUS2
1 2 1 0
2 1 0 0
Run Code Online (Sandbox Code Playgroud)
这些数字将是重要的; 对于批次1,有
对于批次2,有
有没有办法在一个查询中执行此操作,而无需为每个状态代码重写查询?即我可以轻松编写这样的查询,并运行三次:
SELECT batch, COUNT(status)
FROM table
WHERE status = 0
GROUP BY batch
Run Code Online (Sandbox Code Playgroud)
我可以运行它,然后再次运行status = 1,再次运行status = 2,但我希望在一个查询中执行它.
如果它有所不同,除了STATUS列之外还有另一列我可能想要以相同的方式进行汇总 - …