在Clojure Google支持小组上发布此消息对我来说似乎不起作用,所以我会尝试在这里询问。
我正在运行以下稍微修改过的GettingStarted.java(来自clojure发行版)作为一个Spring配置的测试,看看如何将Datomic集成到我的应用程序中并且在下面的第一个Peer.q调用中没有得到任何结果(而相同的控制台调用返回150条记录)。我在这做错了什么,请帮忙吗?
@ContextConfiguration(classes={GettingStartedConfig.class}, loader=AnnotationConfigContextLoader.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class GettingStartedTest {
private final Logger log = LoggerFactory.getLogger(getClass());
private static final Scanner scanner = new Scanner(System.in);
private String uri = "datomic:mem://seattle";
@Autowired
private Reader schema;
@Autowired
private Reader seed0;
private void pause() {
if (System.getProperty("NOPAUSE") == null) {
log.info("\nPress enter to continue...");
scanner.nextLine();
}
}
@SuppressWarnings("rawtypes")
@Test
public void test() throws Exception {
log.info("Creating and connecting to database...at {}", uri +"\n\n");
Peer.createDatabase(uri);
Connection conn = Peer.connect(uri);
pause();
log.info("Parsing schema dtm file and running transaction...\n\n");
log.info("schema: "+schema);
List schema_tx = (List) Util.readAll(schema).get(0);
schema.close();
Object txResult = conn.transact(schema_tx).get();
log.info("result of schema transaction: "+txResult);
pause();
log.info("Parsing seed data dtm file and running transaction...\n\n");
List data_tx = (List) Util.readAll(seed0).get(0);
seed0.close();
txResult = conn.transact(data_tx).get();
pause();
log.info("Finding all communities, counting results...\n\n");
Collection results = Peer.q("[:find ?c :where [?c :community/name]]", conn.db());
log.info("size of the result = {} " , results.size() + "\n\n");
pause();
...............................
[主要] INFO com.excelsiorsoft.daedalus.persistence.datomic.GettingStartedTest - 寻找所有社区,统计结果......
[主要] INFO com.excelsiorsoft.daedalus.persistence.datomic.GettingStartedTest - 结果的大小= 0
先谢谢你帮忙。
答案 0 :(得分:0)
我无法为您调试代码。
但我怀疑你实际上并没有真正填充数据库。这可能与Spring配置或您用于读取数据的任何代码有关。
我建议您尝试更简单的测试,直接插入一两个事实,并测试您可以在尝试更复杂的事情之前阅读它们。