小编San*_*nne的帖子

Java泛型 - 类<?>构造函数参数问题

我已经使用Java很长一段时间了,但有些事情对我来说仍然不太清楚,特别是涉及到泛型......

事情就是这样:我Search正在使用这个类(详见此处),构造如下:

public Search(Class<?> searchClass) {...}
Run Code Online (Sandbox Code Playgroud)

此外,我有一个参数化的通用包装器,如下所示:

public class HibernateSearch<E> extends Search implements Serializable {
    public HibernateSearch(Class<E> entityClass) {
        super(entityClass);
    }
    // ... omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要的是以下内容:我想创建参数化类,其中包含此类作为其字段,例如

public class BaseSelectorComposer<T> extends SelectorComposer<Window> {

    private HibernateSearch<T> searchObject;
    ...
    @Override
    public void doAfterCompose(Window comp) throws Exception {
        super.doAfterCompose(comp);
        this.searchObject =
             new HibernateSearchObject<T>( now what...??? );
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我认为,从给定的例子中我所面临的问题是显而易见的.
有人可以建议在这里可以做些什么,或者一些替代方案?

java generics search hibernate hibernate-search

5
推荐指数
1
解决办法
3200
查看次数

使用hibernate通过userId字段过滤全文搜索结果

假设我有2个实体注释用于全文搜索:

@Entity
public class User implements Serializable {

    @Id
    public Long id;    
    ...

}

@Entity
@Indexed
public class Post {

    @Id
    public Long id;

    @Field(name = "content")
    public String content;

    @ManyToOne
    public User user;

    ...

}
Run Code Online (Sandbox Code Playgroud)

在内容字段上编写全文搜索非常简单.但是如何通过text关键字和用户ID过滤结果?例如,在内容字段上搜索"hello"而在user.id上搜索等于10的查询?

java full-text-search hibernate hibernate-search jpa-2.1

5
推荐指数
1
解决办法
592
查看次数

你能用Hibernate/Lucene对同一个字段进行排序和搜索吗?

我有以下带注释的类,我试图从lucene/hibernate搜索查询中对结果进行排序.我终于让查询正常工作但似乎当我实现必要的注释(在jobStatus上看到)对该列进行排序时,它使得无法再搜索该列.我基于谷歌这里找到的说明.我一直在解决整个hibernate搜索和排序问题,现在我终于想出如何排序和搜索我需要的是能够一起完成它们.

@Entity
@Table(name="jobReq")
@Indexed
public class JobReq {

@Id
@DocumentId
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;

@Field(index = Index.YES)
@Column(name="jobId", nullable=false, unique=true)
private String jobId;

@Field(index = Index.YES)
@Column(name="jobTitle", nullable=false)
private String jobTitle;

@Field(index = Index.YES)
@Column(name="jobContract", nullable=false)
private String contract;

@Field(index = Index.YES)
@Column(name="jobProject", nullable=true)
private String project;

@Field(index = Index.YES)
@Column(name="jobLaborCategory", nullable=false)
private String laborCategory;

@Field(index = Index.YES)
@Column(name="jobSummary", nullable=false)
private String summary;

@Field(index = Index.YES)
@Column(name="jobDescription", nullable=false)
private String jobDescription;

@Fields({@Field, @Field(analyze  = Analyze.NO, name …
Run Code Online (Sandbox Code Playgroud)

java sorting lucene hibernate hibernate-search

4
推荐指数
1
解决办法
3892
查看次数

Apache Lucene和Hibernates搜索获取错误

线程"main"中的异常java.lang.VerifyError:class org.hibernate.search.util.impl.DelegateNamedAnalyzer重写final方法tokenStream.(Ljava/lang/String; Ljava/io/Reader;)Lorg/apache/lucene/analysis /的TokenStream;

lucene hibernate hibernate-search

4
推荐指数
1
解决办法
1922
查看次数

Hibernate ORM 是否与 GraalVM 本机映像编译兼容?

根据文档,GraalVM 项目中的原生图像编译器对动态代理有一些限制。既然Hibernate大量使用了代理,那么在提前编译好的项目中能正常工作吗?

Quarkus项目似乎表明,它可以,但我的理解主要是一个基础上书签交易后

即使编译为 GraalVM 本机映像,Hibernate ORM 现在也可以工作 - 只需确保您使用 Quarkus 来构建应用程序。

如果我不想(或不能)使用 Quarkus 怎么办?是否可以使用使用 Hibernate 的 GraalVM(和 SubstrateVM)编译本机映像应用程序?

Quarkus 实际上做了什么来启用/支持 Hibernate?

java hibernate graalvm quarkus

4
推荐指数
1
解决办法
979
查看次数

Lucene BooleanQuery

如何在Lucene Search中使用带有StandardAnalyzer的booleanQuery?

lucene search hibernate analyzer hibernate-search

3
推荐指数
1
解决办法
2307
查看次数

在hibernate搜索中组合查询

Hibernate Search(lucene)是否有可能组合两个不同的查询.例如,当我想要搜索具有一个对应匹配值的2个字段时:

firstname - John
lastname - Doe

qBuilder.keyword().onField("firstname").matching("John").createQuery());
qBuilder.keyword().onField("lastname").matching("Doe").createQuery());
Run Code Online (Sandbox Code Playgroud)

是一种从这一个查询?

lucene hibernate hibernate-search

3
推荐指数
2
解决办法
1964
查看次数

Hibernate Search(Lucene索引)如何工作?

我正在使用基于Lucene索引构建的Hibernate Search.如果针对数据库表创建索引,则返回结果的性能将很好.

我的问题是,一旦创建了索引,如果我们查询结果,Hibernate Search是否使用创建的索引从原始数据库表中获取结果?或者它不需要命中数据库来获取结果?

谢谢!

java lucene hibernate hibernate-search

2
推荐指数
1
解决办法
4213
查看次数

如何测试使用 Hibernate Search 的服务?

我有 JUnit4 测试类,用此方法以及其他方法进行注释:@Transactional

@Test
public void testDiscoverArtworksByTitle()
{
    FullTextEntityManager ftem = Search.getFullTextEntityManager(this.entityManager);

    this.prepareArtworksForListing();
    ftem.flushToIndexes();

    List<ArtworkListItem> listItems = this.artworkService.discoverArtworksByTitle("Die Hard");
    Assert.assertNotEquals("There are some items in the list", 0, listItems.size());

    // housekeeping
    ftem.purgeAll(ArtworkEntity.class);
}
Run Code Online (Sandbox Code Playgroud)

基本上,我正在构建一些发现功能,我想在开发时(主要是稍后)对其进行正确测试。关键是,这个测试总是失败,就好像索引根本没有建立一样。该方法在内存数据库中prepareArtworksForListing()创建(使用persist(..))一些记录。HSqlDbHibernate 与 H.Search/Lucene 正确连接,因为当我用 注释此方法并@Transactional(propagation = Propagation.NOT_SUPPORTED)显式调用em.getTransaction().begin()和时em.getTransaction().commit()/.rollback(),测试通过,但随后的测试方法失败并显示READ_ONLY TX Error,就好像@Transactional该类缺少原始属性一样。

lucene spring hibernate transactions hibernate-search

2
推荐指数
1
解决办法
1371
查看次数

java.lang.ClassNotFoundException:org.hibernate.annotations.common.reflection.ClassLoadingException

我使用spring junit测试,但是我在所有测试中都收到了这条错误消息,因为我更新了我的Hibernate Search,Hibernate和Springframework.在pom.xml中我包含了来自Hibernate的common.annotations,我也可以在我的库(maven依赖)中找到它,它应该包含在类路径中.但似乎我的测试仍然无法找到课程.

这是pom.xml配置:

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.5.Final</version>

    </dependency>
    <dependency>
        <artifactId>hibernate-core</artifactId>
        <groupId>org.hibernate</groupId>
        <version>4.3.5.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-search</artifactId>
        <version>5.0.0.Alpha3</version>
    </dependency>


    <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>4.7.2</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

Caused by: java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ClassLoadingException
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1402)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:397)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:336)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
    ... 40 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.ClassLoadingException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 51 more
Run Code Online (Sandbox Code Playgroud)

spring hibernate hibernate-search maven

2
推荐指数
1
解决办法
2万
查看次数