Spring Data Elasticsearch ile Spring Boot 1.3.1 üzerinde çalışmaya başladım ve veritabanımda kullanılan aynı varlığı kullanmak istiyorum ve bileşik anahtarı var.mümkün bahar-data-elasticsearch @Document bileşik anahtar ile mümkün mü?
Varlık sınıfı:
@IdClass(PassengerPk.class)
@Table(name = "passenger")
@Document(indexName="passenger")
public class Passenger implements Serializable {
@Id
@ManyToOne
@JoinColumn(columnDefinition="long", name="user_id", referencedColumnName="id")
private User user;
@Id
@ManyToOne
@JoinColumn(columnDefinition="long", name="scheduler_id", referencedColumnName="id")
private Scheduler scheduler;
@Column(name = "is_active")
private Boolean isActive;
...
}
Anahtar sınıfı:
public class PassengerPk implements Serializable {
private Long user;
private Long scheduler;
public PassengerPk() {
}
public PassengerPk(Long user, Long scheduler) {
this.user = user;
this.scheduler = scheduler;
}
...
}
JPA Elasticsearch deposu:
public interface PassengerSearchRepository extends ElasticsearchRepository<Passenger, PassengerPk> {
}
Veritabanı: database relationships
Bu kodu derlemeye çalışırsam, bu hatayı alıyorum.
Caused by: java.lang.IllegalArgumentException: Unsuppored ID type class com.dualion.test.domain.PassengerPk
at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactory.getRepositoryBaseClass(ElasticsearchRepositoryFactory.java:79) ~[spring-data-elasticsearch-1.3.1.RELEASE.jar:na]
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepositoryInformation(RepositoryFactorySupport.java:238) ~[spring-data-commons-1.11.1.RELEASE.jar:na]
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:181) ~[spring-data-commons-1.11.1.RELEASE.jar:na]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251) ~[spring-data-commons-1.11.1.RELEASE.jar:na]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237) ~[spring-data-commons-1.11.1.RELEASE.jar:na]
at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean.afterPropertiesSet(ElasticsearchRepositoryFactoryBean.java:55) ~[spring-data-elasticsearch-1.3.1.RELEASE.jar:na]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
... 71 common frames omitted
Kodumu nasıl değiştirebilirim?
Teşekkür
Herkes bana bir çözüm önerebilir mi? – kn4ls
@ IdClass'ın bağımlılığını nasıl devralıyorsunuz?JPA ile JPA arasındaki bazı bağımlılıkların getirdiği bir sınıf olduğunu düşünüyorum. Nasıl yapılacağını bilmiyorum. Tabii ki ES için kullanamazsın. Bu arada, hedefinize nasıl ulaşacağınızı bilmek benim için çok yararlı olacaktır. – andPat
Son olarak, HibernateSearch kullanın ve ES değil, beacause uygulaması daha kolaydır. – kn4ls