我有一个数据库表,它有两个列,分别指定事件的开始时间和结束时间。
我正在使用Hibernate访问数据库并检索和存储数据。
这个表的hibernate Model类看起来像这样。
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(房地产);
此房地产对象包含我上面提到的EstateViewings对象列表。
Solr索引存储在Estate对象中的其他数据,除了EstateViewings列表。
我想知道这是否是因为我使用的Joda时间间隔。
任何人都可以帮我找到这个问题的解决方案。提前帮助
答案 0 :(得分:1)
我不明白为什么Solr必须理解Jodatime类型。我认为在将它送到Solr之前,你必须将它映射到标准类型(例如long
刻度线。)