gpt4 book ai didi

java - ATG 存储库 API

转载 作者:行者123 更新时间:2023-11-30 07:27:20 29 4
gpt4 key购买 nike

我试图通过扩展 GenericService 的 ATG 类更新多条记录。但是我遇到了障碍。我如何执行多个插入查询,我可以继续将所有项目/行添加到缓存对象中,然后使用 item.add() 与表执行单个命令同步?

示例代码

第一部分是在插入发生之前清除表中的行(如果有人知道一种方法来清除表中的所有行而不必循环遍历并逐一删除,这将非常有用)。

    MutableRepository repo = (MutableRepository) feedRepository;
RepositoryView view = null;

try{
view = getFeedRepository().getView(getFeedRepositoryFeedDataDescriptorName());
RepositoryItem[] items = null;
if(view != null){
QueryBuilder qb = view.getQueryBuilder();
Query getFeedsQuery = qb.createUnconstrainedQuery();
items = view.executeQuery(getFeedsQuery);
}
if(items != null && items.length>0){
// remove all items in the repository
for(RepositoryItem item :items){
repo.removeItem(item.getRepositoryId(), getFeedRepositoryFeedDataDescriptorName());
}
}



for(RSSFeedObject rfo : feedEntries){
MutableRepositoryItem feedItem = repo.createItem(getFeedRepositoryFeedDataDescriptorName());

feedItem.setPropertyValue(DB_COL_AUTHOR, rfo.getAuthor());
feedItem.setPropertyValue(DB_COL_FEEDURL, rfo.getFeedUrl());
feedItem.setPropertyValue(DB_COL_TITLE, rfo.getTitle());
feedItem.setPropertyValue(DB_COL_FEEDURL, rfo.getPublishedDate());

RepositoryItem item = repo.addItem(feedItem) ;
}

最佳答案

我对您的问题的解释是,您想将多个存储库项目添加到您的存储库中,但您希望在数据库级别相当有效地执行此操作。我建议你使用 Java Transaction API as recommended in the ATG documentation ,像这样:

TransactionManager tm = ...
TransactionDemarcation td = new TransactionDemarcation ();
try {
try {
td.begin (tm);

... do repository item work ...
}
finally {
td.end ();
}
}
catch (TransactionDemarcationException exc) {
... handle the exception ...
}

假设您在示例中使用 SQL 存储库,SQL INSERT 语句将在每次调用 addItem 后发出,但直到/如果事务成功完成才提交。

关于java - ATG 存储库 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779735/

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