gpt4 book ai didi

java - 数据库查询直接在 DBMS 上工作,但不在 Java 中工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:32 26 4
gpt4 key购买 nike

我正在尝试在处理摄取到 KIT DataManager 之前做一些事情(Code on GitHub,它在 tomcat7 上运行)带有“暂存处理器”……

添加自定义暂存处理器

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"},

userid 1 的管理员用户的标准email

                        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();
}

试图从 UserQuota 获取配额

另一方面,相应的实现并没有在这里完成工作(我想开始工作)

        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 );

UserQuota 在这里仍然是 null

数据库是 PostgreSQL,表是:

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)
);

我想从处理器中的数据库中获取这个配额

INSERT INTO userquota (id, uid,quota) VALUES ( 0, 1, 1048576 );

所以我主要想从 db: 1048576 中获取摄取用户(此处为 1)的条目作为 Long。

欢迎任何关于如何处理这些事情的提示。

最佳答案

above comment 中所述,以下语句是无效的 SQL 语法:

SELECT u FROM UserData u WHERE u.email=?1

相反,根据上面的评论,正确的语法是:

SELECT u.* FROM UserData u WHERE u.email='dama@kit.edu'

关于java - 数据库查询直接在 DBMS 上工作,但不在 Java 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43732860/

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