У меня есть таблица базы данных, в которой два столбца вместе указывают время начала и время окончания события.
Я использую Hibernate для доступа к базе данных, а также для получения и хранения данных.
Мой класс Hibernate для этой таблицы выглядит следующим образом.
public class EstateViewing implements Comparable<EstateViewing> {
private Long id;
private Estate estate;
private Interval timeInterval;
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "estate_viewing_generator")
@SequenceGenerator(sequenceName = "estate_viewing_sequence", name = "estate_viewing_generator")
public Long getId() {
return id;
}
protected void setId(Long id) {
this.id = id;
}
@ManyToOne
public Estate getEstate() {
return estate;
}
public void setEstate(Estate estate) {
this.estate = estate;
}
@Columns(columns = { @Column(name = "timeIntervalStart"), @Column(name = "timeIntervalEnd") })
@Type(type = "org.joda.time.contrib.hibernate.PersistentInterval")
public Interval getTimeInterval() {
return timeInterval;
}
public void setTimeInterval(Interval timeInterval) {
this.timeInterval = timeInterval;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
@Override
/*
* Time not defined is conceptually thought of as an unlimited high value
* -1 Time is earlier than other (lower value)
* 0 Time is equal
* 1 Time is later than other (higher value)
*/
public int compareTo(EstateViewing otherViewing) {
if (this.getTimeInterval() == null && otherViewing == null)
return 1;
// Not defined, so in the future at some point
if (this.getTimeInterval() == null && (otherViewing != null && otherViewing.getTimeInterval() != null))
return 1;
if (this.getTimeInterval() != null && (otherViewing == null || otherViewing.getTimeInterval() == null))
return -1;
if (this.getTimeInterval() != null) {
// Before
if (this.getTimeInterval().getEnd().isBefore(otherViewing.getTimeInterval().getEnd())) {
return -1;
}
if (this.getTimeInterval().getEnd().isAfter(otherViewing.getTimeInterval().getEnd())) {
return 1;
}
}
return 0;
}
Но когда я даю солнечную энергию для индексации этого класса, она не индексирует временной интервал Joda.
Я прошу solr проиндексировать этот класс:
solrServer.addBean (estate);
Этот объект недвижимости содержит объекты List of EstateViewings, которые я упомянул выше.
Solr индексировать другие данные, хранящиеся в объекте Estate, кроме List of EstateViewings.
Мне было интересно, связано ли это с временным интервалом Joda, который я использую.
Может ли кто-нибудь помочь мне найти решение этой проблемы. Заранее спасибо за любую помощь