[Hibernate-JIRA] Created: (HHH-2279) Cannot fully disable integration with Hibernate Validator
by Jacek Chleborowicz (JIRA)
Cannot fully disable integration with Hibernate Validator
---------------------------------------------------------
Key: HHH-2279
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2279
Project: Hibernate3
Type: Improvement
Components: metamodel
Versions: 3.2.0.cr2
Reporter: Jacek Chleborowicz
Priority: Minor
I use Hibernate Validator for application-level validation.
I disabled pre-insert and pre-update event listeners from Hibernate Validator.
I allow persisting data, which doesn't match validation rules defined by Hibernate Validator annotations.
Unfortunately Hibernate Validator is used in metamodel construction and i cannot disable it.
For example, if i use @NotNull annotation, i've got: PropertyValueException with message "not-null property references a null or transient value: ...", because @NotNull annotation is recognized in metamodel construction.
There should be configuration property defining if Hibernate integrates with Hibernate Validator. It should enable/disable:
- usage of Hibernate Validator in metamodel construction;
- registration of Validator event listeners.
--
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
18 years, 9 months
[Hibernate-JIRA] Created: (HHH-2235) Support for null map-keys in <map> mappings
by Igor Lobanov (JIRA)
Support for null map-keys in <map> mappings
-------------------------------------------
Key: HHH-2235
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2235
Project: Hibernate3
Type: Bug
Components: core
Versions: 3.2.0.ga
Reporter: Igor Lobanov
Priority: Minor
I'm not sure if I should file it as a bug.
Hibernate requires index column for <map> mappings to be not null. This is required by the code in AbstractCollectionPersister#readIndex(...), which raises exception if index column is null. However, when I override collection persister and force readIndex method to return null, everything seems to work fine. Hibernate allows me to work with maps using null value as a key. Though I havn't tested it extensivly yet.
What is the reason for disallowing null values as a keys? If there are possible complicated error conditions, then this issue is a feature request for null-values support for <map> mappings. If there are no errors possible, then constraining such behavior is probably wrong.
--
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
18 years, 10 months
[Hibernate-JIRA] Created: (HHH-2019) Provide a way to unset properties, and/or provide a 'none' option for hbm2ddl.auto
by Dave E Martin (JIRA)
Provide a way to unset properties, and/or provide a 'none' option for hbm2ddl.auto
----------------------------------------------------------------------------------
Key: HHH-2019
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2019
Project: Hibernate3
Type: Improvement
Environment: hibernate / annotations / hibernate.properties
Reporter: Dave E Martin
Priority: Minor
It may occasionally be desirable to programmatically get rid of or override a property value, this is generally allowed for by the .setProperty method, however:
Once hbm2ddl.auto is set to something, there is no way to unset it, or set it to a value which would be equivalent to its being unset (or its undocumented). There is no remove or unset, or deleteProperty, and also setting it to null does not work.
Due to issues such as HHH-2018, it may be necessary to programmatically 'get rid of' hbm2ddl.auto even if the end user (or some other mechanism) has specified a value for it in an external hibernate.properties file (or other method of setting hibernate properties).
--
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
18 years, 10 months
[Hibernate-JIRA] Created: (HBX-865) ClassValidator cannot be instantiated while trying to open a new Session
by Christian Laakmann (JIRA)
ClassValidator cannot be instantiated while trying to open a new Session
------------------------------------------------------------------------
Key: HBX-865
URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-865
Project: Hibernate Tools
Type: Bug
Versions: 3.2beta9
Environment: Hibernate 3.2, Hibernate Tools 3.2beta9 and most recent Nightly
DB: MSSQL Server 2000 & HSQLDB
Reporter: Christian Laakmann
Attachments: Test.java, hibernate.cfg.xml
When I use the @NotEmpty Validator on a String property, Hibernate Tools is unable to open a new Session because the ClassValidator could not be instantiated.
Workaround was to replace @NotEmpty with @NotNull.
see also: http://forum.hibernate.org/viewtopic.php?p=2339708#2339708
Stack-Trace:
java.lang.IllegalArgumentException: could not instantiate ClassValidator
at org.hibernate.validator.ClassValidator.createValidator(ClassValidator.java:287)
at org.hibernate.validator.ClassValidator.createMemberValidator(ClassValidator.java:255)
at org.hibernate.validator.ClassValidator.initValidator(ClassValidator.java:216)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:127)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:105)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:97)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:319)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1210)
at org.hibernate.console.ConsoleConfiguration$2.execute(ConsoleConfiguration.java:317)
at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:65)
at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:89)
at org.hibernate.console.ConsoleConfiguration.buildSessionFactory(ConsoleConfiguration.java:312)
at org.hibernate.eclipse.console.workbench.LazySessionFactoryAdapter.getChildren(LazySessionFactoryAdapter.java:41)
at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.getChildren(BasicWorkbenchAdapter.java:88)
at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:94)
at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:207)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
Caused by: java.util.MissingResourceException: Can't find resource in validator bundles, key validator.notEmpty
at org.hibernate.validator.interpolator.DefaultMessageInterpolator.replace(DefaultMessageInterpolator.java:107)
at org.hibernate.validator.interpolator.DefaultMessageInterpolator.initialize(DefaultMessageInterpolator.java:66)
at org.hibernate.validator.interpolator.DefaultMessageInterpolatorAggerator.addInterpolator(DefaultMessageInterpolatorAggerator.java:37)
at org.hibernate.validator.ClassValidator.createValidator(ClassValidator.java:283)
... 16 more
java.util.MissingResourceException: Can't find resource in validator bundles, key validator.notEmpty
at org.hibernate.validator.interpolator.DefaultMessageInterpolator.replace(DefaultMessageInterpolator.java:107)
at org.hibernate.validator.interpolator.DefaultMessageInterpolator.initialize(DefaultMessageInterpolator.java:66)
at org.hibernate.validator.interpolator.DefaultMessageInterpolatorAggerator.addInterpolator(DefaultMessageInterpolatorAggerator.java:37)
at org.hibernate.validator.ClassValidator.createValidator(ClassValidator.java:283)
at org.hibernate.validator.ClassValidator.createMemberValidator(ClassValidator.java:255)
at org.hibernate.validator.ClassValidator.initValidator(ClassValidator.java:216)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:127)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:105)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:97)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:319)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1210)
at org.hibernate.console.ConsoleConfiguration$2.execute(ConsoleConfiguration.java:317)
at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:65)
at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:89)
at org.hibernate.console.ConsoleConfiguration.buildSessionFactory(ConsoleConfiguration.java:312)
at org.hibernate.eclipse.console.workbench.LazySessionFactoryAdapter.getChildren(LazySessionFactoryAdapter.java:41)
at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.getChildren(BasicWorkbenchAdapter.java:88)
at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:94)
at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:207)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
--
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
18 years, 10 months
[Hibernate-JIRA] Created: (HSEARCH-33) batch_size to prevent OutOfMemoryException while inserting many objects
by Stefan (JIRA)
batch_size to prevent OutOfMemoryException while inserting many objects
-----------------------------------------------------------------------
Key: HSEARCH-33
URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-33
Project: Hibernate Search
Type: New Feature
Components: engine
Versions: 3.0.0.beta1
Reporter: Stefan
While inserting many objects in a batch the application runs out of memory because the FullTextIndexEventListener for Lucene collects the updates.
This is a tough problem. Today the solution is to apply the work in n transactions rather than 1. Maybe the notion of batch_size at some point to force a "flush" when the queue goes up can help. But it sacrifices the transactional semantic.
hibernate.cfg.xml
<event type="post-insert">
<listener class="org.hibernate.search.event.FullTextIndexEventListener"/>
</event>
Inserting code something like:
Session session = sessionFactory.openSession();
session.setCacheMode(CacheMode.IGNORE);
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Item item = new Item(...);
session.save(item);
if ( i % 100 == 0 ) {
session.flush();
session.clear();
}
}
tx.commit();
session.close();
--
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
18 years, 10 months
[Hibernate-JIRA] Created: (ANN-495) Provide access to IndexWriter.optimize()
by Emmanuel Bernard (JIRA)
Provide access to IndexWriter.optimize()
----------------------------------------
Key: ANN-495
URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-495
Project: Hibernate Annotations
Type: New Feature
Components: lucene
Reporter: Emmanuel Bernard
Fix For: 3.3.0.Alpha1
The problem is not solved "automatically" yet. But here is the reason why.
First of all, the elements are properly deleted, and the index file reflect that as soon as IndexReader.close() is called (which is done by Hibernate Search). However, the files containing the document data are not cleaned.
Basically, to physically delete the elements, you need to optimize() your index, this operation typically takes more time and doing it for every single delete is not appropriate.
I see 4 solutions:
1. let the user access the Directory and call the indexWriter.optimize() method. It works today but it sucks.
2. add an FullTextSession.optimize(Class) method, and the application is responsible for the method trigger. This is the easy solution but put more work on the user. And I'm not happy to push a maintenance API to the Session. Esp since this is more of a SessionFactory like API.
2bis. publish this API through JMX
3. optimize every N operations. It is trivial to add a counter per DirectoryProvider and trigger the optimization. N should be customizable
4. optimize every N seconds. either by setting a timer in an additional thread or wait for the next operation and compare the timestamp
2(bis or not) and 3 are my favorites. It's really 2 or 3 hours of work. If someone is interested, ping me.
--
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
18 years, 10 months