我正在尝试处理Ingest到KIT DataManager(Code on GitHub,它在tomcat7上运行)之前使用" Staging Processor" ...
添加自定义暂存处理器
@Override
public void onClick(View v) {
if (v == YourEditText) {
// Get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
YourEditText.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
}
...
package edu.kit.dama.mdm.content.mets;
...
public class TryQuota extends AbstractStagingProcessor {
...
尝试获取用户数据
......这是有效的
@Override
public final void performPreTransferProcessing(TransferTaskContainer pContainer) throws StagingProcessorException {
UserData userResult = null;
try {
userResult = mdm.findSingleResult(
"Select u FROM UserData u WHERE u.email=?1",
new Object[]{"dama@kit.edu"},
1
email
userid
尝试从UserQuota获取配额
另一方面,相应的实现并没有在这里完成工作(我想要工作)
UserData.class
);
} catch (UnauthorizedAccessAttemptException e2) {
System.out.println("exception on extracting userid");
e2.printStackTrace();
}
try {
System.out.println("KIT DM ID: " + userResult.getUserId());
}catch(Exception e4) {
System.out.println("exception on output for userid");
e4.printStackTrace();
}
Number UserQuota = null;
try {
UserQuota = mdm.findSingleResult(
//SQL would be: "SELECT quota FROM userquota WHERE uid=?;"
//JPQL is …
"Select q.quota FROM UserQuota q WHERE q.uid=?1",
new Object[]{1},
Number.class
);
} catch (UnauthorizedAccessAttemptException e2) {
System.out.println("exception on userquota");
e2.printStackTrace();
}
System.out.println("quota is: " + UserQuota );
此处仍然为空
DB是PostgreSQL,表是:
UserQuota
我希望从处理器中的db获取此配额
CREATE SEQUENCE userquota_seq
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE;
CREATE TABLE userquota
(
id INTEGER NOT NULL DEFAULT nextval('userquota_seq'),
uid INTEGER NOT NULL DEFAULT 0,
quota DECIMAL NOT NULL DEFAULT 0,
CONSTRAINT uid_key UNIQUE (uid),
CONSTRAINT fk_uid FOREIGN KEY (uid) REFERENCES users(id)
);
所以主要是我希望从db:INSERT INTO userquota (id, uid,quota) VALUES ( 0, 1, 1048576 );
获取摄取用户(此处为1)的条目为Long。
有关如何处理这些事情的任何提示都欢迎。
答案 0 :(得分:1)
如above comment中所述,以下语句是无效的SQL语法:
SELECT u FROM UserData u WHERE u.email=?1
相反,根据上面的评论,正确的语法是:
SELECT u.* FROM UserData u WHERE u.email='dama@kit.edu'
答案 1 :(得分:0)
我通过创建类UserQuota
1找到了解决方案,因此JPQL可以在这里工作。
由于我没有找到方法,我首先复制了类UserData
,删除了我没有使用的所有内容,并根据我的数据库表userquota
更改了成员。这也意味着在扩展db表时,这个类也需要改变。
我不知道的一个非常重要的部分是,这个新类还需要在persistence.xml
中注册tomcat7,这里也是从UserData
的条目中复制的。