Java 如何在JBossDataGrid中使用hibernate搜索?
我需要使用JBossDataGrid来停止某些文档并使其可搜索。所以,我正在考虑使用Hibernate搜索,它已经是JBoss的一部分了。但现在我被卡住了。下面是我在JUnit中生成的一个简单代码Java 如何在JBossDataGrid中使用hibernate搜索?,java,hibernate,jboss,hibernate-search,Java,Hibernate,Jboss,Hibernate Search,我需要使用JBossDataGrid来停止某些文档并使其可搜索。所以,我正在考虑使用Hibernate搜索,它已经是JBoss的一部分了。但现在我被卡住了。下面是我在JUnit中生成的一个简单代码 @Test public void testName() throws Exception { Cache<Object, Object> c = new DefaultCacheManager().getCache(); c.put("id", new ProductDG
@Test
public void testName() throws Exception {
Cache<Object, Object> c = new DefaultCacheManager().getCache();
c.put("id", new ProductDG("ean", "desc", newArrayList("image1")));
ProductDG product = (ProductDG) c.get("id");
assertTrue(product.getEAN().equals("ean"));
SessionFactory factory = new AnnotationConfiguration().buildSessionFactory();
Session session = factory.openSession();
FullTextSession fts = getFullTextSession(session);
fts.index(product);
}
@Indexed(index="Product")
class ProductDG {
private String EAN;
private String description;
private List<String> images;
ProductDG(String EAN, String description, List<String> images) {
this.EAN = EAN;
this.description = description;
this.images = images;
}
String getEAN() {
return EAN;
}
String getDescription() {
return description;
}
List<String> getImages() {
return images;
}
}
我想我没有连接的数据库。这到底是怎么回事?有人告诉我必须使用JBossDataGrid。我知道,但它太新了,几个月前才推出。这能做到吗 JBoss Data Grid使用Hibernate搜索是正确的,但它只用于索引和查询定义:您不需要通过传统的Hibernate会话使用它 您不需要启动Hibernate SessionFactory 在类路径上甚至不需要Hibernate ORM JAR 您确实使用了Hibernate搜索中的注释 要制作一个受您的域启发的示例,要使用它,您只需要在中启用索引 最后一个问题是关于Hibernate OGM的。是的,也可以这样做,但您可能希望阅读版本4的文档:
org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:97)
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:67)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:174)
at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1797)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1755)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)
at com.tesco.adapters.JBossDataGrid.testName(JBossDataGrid.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
@Test
public void testName() throws Exception {
Cache<Object, Object> c = new DefaultCacheManager("configuration-file.xml").getCache();
c.put("id", new ProductDG("ean", "desc", newArrayList("image1")));
//at this point your Product is already indexed (assuming you don't use transactions)
//Using the MatchAllDocsQuery we'll get a list of all instances:
CacheQuery query = searchManager.getQuery(new MatchAllDocsQuery(), ProductDG.class);
// Execute Query
List objectList = query.list();
for (Object prod : objectList)
System.out.println(prod);
}