[
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-678?pag...
]
Nick Fenwick commented on HSEARCH-678:
--------------------------------------
G Fernandes: I don't know if it makes sense to invent a new Money Type. I did not
fully understand Sanne's suggestion to use @Transient and @Numeric (did you mean
@NumericField?). It sounds as if the advice is to store a long representation like 1234
in Lucene, and convert it to a BigDecimal("12.34") when reading it into my
Entity attribute. This sounds like a sensible way to go, and avoids inventing a new Money
Type (which may be an overly complicated solution). I will have to experiment for a
while. This sounds a lot like a Bridge, however I don't know how to implement a
TwoWay Bridge to map a BigDecimal into a string (?) representation in Lucene and still get
the Trie storage optimisations that come with @NumericField.
An example from you guys would be much appreciated.
If you guys come up with more solid solutions with your greater experience of the problem
domain, please do contribute here. I feel there is something lacking, either in
documentation or implementation, in trying to solve this problem. One thing is for sure,
I have to stop using 'double' to store and calculate my financial data :)
@NumericField does not work with BigDecimal types (and others?)
---------------------------------------------------------------
Key: HSEARCH-678
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-678
Project: Hibernate Search
Issue Type: Bug
Components: mapping, query
Affects Versions: 3.3.0.Final
Environment: Hibernate 3.6.0, MySQL 5.1.52, Fedora Core 14
Reporter: Nick Fenwick
Assignee: G Fernandes
Fix For: 3.4.0
Attachments: HSEARCH-678-unittest1.tgz
This is my first JIRA so please help me assigns its Component above correctly.
My first attempt to use BigDecimal ran into trouble trying to use the new @NumericField
annotation. The SessionFactory fails to create an instance of the session. The code:
{{
@Column(name="val")
@Field(name="val", index=Index.UN_TOKENIZED, store=Store.YES)
@NumericField
private BigDecimal val;
}}
Results in the exception:
{{
Exception in thread "main" java.lang.ExceptionInInitializerError
[cut]
Caused by: org.hibernate.HibernateException: could not init listeners
[cut]
Caused by: org.hibernate.search.SearchException: Unable to guess FieldBridge for val
at org.hibernate.search.bridge.BridgeFactory.guessType(BridgeFactory.java:250)
at
org.hibernate.search.engine.AbstractDocumentBuilder.bindFieldAnnotation(AbstractDocumentBuilder.java:690)
at
org.hibernate.search.engine.AbstractDocumentBuilder.checkForField(AbstractDocumentBuilder.java:564)
[cut]
}}
Taking out the @NumericField allows the session to start up successfully.
I will attempt to make a test case but I'm having local build env issues. 'mvn
clean install' of a fresh hibernate search git checkout is taking an incredibly long
time (an hour for the first 10 or so .pom files?) so I may be several hours or days over
this trivial task.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira