| Sujet | Description | Statut | Par | Type | Priorité | Version | Catégorie | Date de création |
|---|
| Replace (using a tag-value) the TopiaException to TopiaruntimeException in generated code | It is annoying to have a none runtime exception when asking a DAO from the DAOHelper, this is clearly a technical issue and we should not have to catch this exception.
Let's call the tag-value *topia.runtime.exception*, if not filled, will used as before the TopiaException, otherwise use the given runtime exception if value if true. | Assigné | tchemit | Evolution | Normal | 3.0 | generation | 04/02/2012 à 09:45 |
| use JPA api | | Assigné | - | Evolution | Normal | 3.0 | topia-persistence | 08/03/2010 à 04:25 |
| allow to add method generic method in a DAO with clean model | In WaoUserDAO, i want to add a method with signature
List findUsersByCompany(Company company)
If i add this to the model, it's ok but in WaoUserDAOImpl, i have to override it :
public class WaoUserDAOImpl extends WaoUserDAOAbstract {
@Override
public List findUsersByCompany(Company company) throws TopiaException {
TopiaQuery query = createQuery().
addEquals(WaoUser.PROPERTY_COMPANY, company).
addOrder(WaoUser.PROPERTY_FIRST_NAME, WaoUser.PROPERTY_LAST_NAME);
return findAllByQuery(query);
}
}
The problem is that the code doesn't compile. findAllByQuery(query); do not return List but return List. As a workaround, i could change the return type of the method declared in model to List. It will work fine but it's bad to have a « E » with no semantic in the model. A better way to do that would be to use Templates available in UML but argouml doesn't not support it.
A solution to this problem would be to allow List to be used in the model while to generator will replace it by List in the code to override.
This issue may depend on issue #610 | Nouveau | - | Evolution | Normal | 3.0 | topia-persistence | 24/12/2010 à 12:14 |
| Use Hibernate 4 | | Assigné | fdesbois | Evolution | Normal | 3.0 | topia-persistence | 14/03/2012 à 06:16 |
| Update/clean all site documentation | Many documentation files are obsolete or false.
We must do a big clean on documentation and make site acceptable for public | Nouveau | - | Evolution | Urgent | 3.0 | Documentation | 10/12/2010 à 06:30 |
| Use JTA api | | Assigné | echatellier | Evolution | Haut | 3.0 | topia-persistence | 02/03/2010 à 06:25 |
| Multiple migration cannot be resumed if failure | I have too migration to do : let's say 1.6 and 1.7.
Topia will start to migrate 1.6, commit modifications, then migrate to 1.7 then commit, finally save the schema version 1.7.
Now, suppose migration to 1.7 fail. If i re-run migrations, topia will restart migration from 1.6 and do this migration two times while those changes has been done and commited.
Topia should migrate to 1.6, change cshema version to 1.6, commit, migrate 1.7, change version to 1.7, commit etc. | Nouveau | tchemit | Anomalie | Bas | 3.0 | service migration | 17/01/2011 à 03:58 |
| Improve project design | h3. Templates
* Separate Template api from runtime api (new module *topia-persistence-templates*)
h3. Tests
This part can be changed, if we find better way to deals with tests.
* Create a strong persistence test base (new module *topia-persistence-test*)
* use this new module to test services
* Do not export topia-persistence as test classifier | Nouveau | - | Evolution | Normal | 3.0 | - | 29/01/2010 à 10:46 |
| Remplacer l'utilisation de la requete SQL dans la génération pour le cas du delete N-N | Relation N-N sans classe association. La table jointure existe mais pas en tant qu'entité hibernate.
Ex :
List list = getContext().getHibernate().createSQLQuery(
"SELECT main.topiaid " +
"from sampleRow main, fishingzone_samplerow secondary " +
"where main.topiaid=secondary.sampleRow" +
" and secondary.fishingZone='" + entity.getTopiaId() + "'")
.addEntity("main", fr.ifremer.wao.WaoModelDAOHelper.getImplementationClass(fr.ifremer.wao.entity.SampleRow.class)).list();
for (fr.ifremer.wao.entity.SampleRow item : list) {
item.removeFishingZone(entity);
}
La fonction HQL elements() permettrait de resourdre le probleme, et donc une requete HQL pourrait remplacer cette requete SQL avec TopiaQuery par exemple | Nouveau | - | Evolution | Normal | 3.0 | - | 16/02/2010 à 06:02 |
| Make DAOHelper instantiable and no more static | It could be useful for injection purpose to avoid having static management on this class. Maybe TopiaContext could be set in an other safely way.
For the moment, just remove static seems better. | Nouveau | - | Evolution | Haut | 3.0 | topia-persistence | 17/04/2011 à 12:54 |
| Add DAO interface generation | Add DAO interface generation.
DAO interface will be composed of all CRUD operation without any reference on Topia objects.
Depends on JTA evolution. | Nouveau | - | Evolution | Normal | 3.0 | topia-persistence | 02/03/2010 à 06:24 |
| Annotation TopiaTransaction | Introduce this annotation to manage easily transactions.
- Need other annotation @TopiaExceptionHandler over custom method to manage errors during transaction management
- Need other annotation @TopiaRootContext to provide the rootContext where transactions will be opened
- Need other annotation @TopiaDAOHelper to inject the transaction in daoHelper used in the application
Usage :
public class MyService {
@TopiaRootContext
protected TopiaContext rootContext;
@TopiaDAOHelper
protected MyDAOHelper daoHelper;
public MyService(Properties properties) throws TopiaNotFoundException {
rootContext = TopiaContextFactory.getContext(properties);
}
@TopiaExceptionHandler
protected void onException(TopiaException ex) {
// implement some error management, transaction is already rollback if needed
}
@TopiaTransaction
public Book saveBook(Book book) {
BookDAO bookDAO = daoHelper.getBookDAO();
bookDAO.update(book);
return book;
}
}
- TopiaContextHandler could be useless if TopiaException becomes a RuntimeException (as any other framework for technical exceptions)
- TopiaDAOHelper must become instantiable (and NOT static), interface seems necessary
- Maybe TopiaDAOHelper could contains the rootContext, only Properties will be necessary. Note that Helper suffix is not appropriate, and Factory seems better.
Simple version with those changes :
public class MyService {
@TopiaDAOFactory
protected MyDAOFactory daoFactory;
public MyService(Properties properties) {
daoFactory = new MyDAOFactory(properties);
}
@TopiaTransaction
public Book saveBook(Book book) {
BookDAO bookDAO = daoFactory.getBookDAO();
bookDAO.update(book);
return book;
}
}
Options could be useful for @TopiaTransaction like readOnly (do not commit).
In the future this annotation could be used with JTA and/or Spring @Transactionnal management | Nouveau | - | Evolution | Normal | 3.0 | topia-persistence | 17/04/2011 à 12:48 |
| Clean api | - complete javadoc
- clean api
- clean code
Done on **TopiaDAO** | Assigné | tchemit | Evolution | Normal | 3.0 | topia-persistence | 23/04/2010 à 04:27 |
| Tests before JPA migration | - TopiaContextFactory
- TopiaContextImpl
- TopiaQuery
- TopiaFiresSupport | Nouveau | - | Evolution | Normal | 3.0 | tests | 07/05/2010 à 05:18 |
| Suppression de toutes les classes et ressources dépréciées | | Nouveau | - | Evolution | Normal | 3.0 | service migration | 13/06/2010 à 08:04 |
| Refactor generated code for delete on relation without association entity | It's pretty tricky !
List list = getContext().getHibernate().createSQLQuery(
"SELECT main.topiaid " +
"from contact2 main, contacts_party2 secondary " +
"where main.topiaid=secondary.contacts" +
" and secondary.party2='" + entity.getId() + "'")
.addEntity("main", org.nuiton.topia.TopiaTestDAOHelper.getImplementationClass(org.nuiton.topiatest.deletetest.Contact2.class)).list();
| Assigné | fdesbois | Evolution | Normal | 3.0 | generation | 07/05/2010 à 10:10 |
| Add integration tests | | Nouveau | - | Evolution | Normal | 3.0 | service migration | 12/07/2010 à 05:11 |
| Make tutorial of migration service | - howto use it
- best pratices to write migration callbacks | Nouveau | - | Evolution | Normal | 3.0 | service migration | 12/07/2010 à 05:13 |
| Dont reference external entities in project's DAOHelper | Les entités externes au projets sont quand même référencé dans le DAOHelper du projet. Ce qui pose des problèmes lorsque l'on fait par exemple appel à getImplementationClasses. | Nouveau | - | Anomalie | Normal | 3.0 | topia-persistence | 01/04/2011 à 10:16 |
| Natural id and not null attributes are not propagated on generalized entities | If A have some natural ids or not null attributes, B extend A, B doesnt have natural ids and not null attributes of A. | Résolu | sletellier | Anomalie | Normal | 2.6.10 | topia-persistence | 05/04/2012 à 10:30 |
| Add schema if needed on create and drop index on hibernate mapping | Schema is missing on create and drop index hibernate mapping :
CREATE INDEX <%=indexName%> ON <%=tableName%>(<%=propertyName%>)
DROP INDEX <%=indexName%>
| Résolu | sletellier | Anomalie | Normal | 2.6.10 | topia-persistence | 06/04/2012 à 09:58 |
| Depreciate method create(naturalId) on DAOs | Lorsque l'on a des naturalIds dans Topia, les DAO ont une méthode create qui prend les naturalIds en paramètre, hors cette méthode est ambigus, il existe déjà une méthode create sur le TopiaDAOImpl. L'idée serait de la renommer en createByNaturalId. Je vais aussi ajouter la méthode createByNotNull.
*+Attention+ : lorsque la méthode sera supprimer, justement parce que la méthode est ambigus, ça ne cassera pas à la compilation mais au runtime !* | Résolu | sletellier | Anomalie | Normal | 2.6.10 | topia-persistence | 06/04/2012 à 09:44 |
| Bad index generated with indexForeignKeys for a one-2-many renamed relation | Having this ona PollAccount entity
Should obtain this :
CREATE INDEX idx_PollAccount_pollsCreated ON poll(creator)
DROP INDEX idx_PollAccount_pollsCreated
but is generated :
CREATE INDEX idx_PollAccount_pollsCreated ON poll(pollAccount)
DROP INDEX idx_PollAccount_pollsCreated
--> the renamed attribute *creator* is not well used. | Résolu | tchemit | Anomalie | Normal | 2.6.9 | generation | 14/03/2012 à 12:46 |
| Manage in the EntityEnum contract the properties marked as not-null | To be able to create by generic algorithms entity using not-null properties, we need
to execute the dao.create(xxx) with entity or properties map of all not-null properties like it is alreay done for natural ids.
Adding some methods in TopiaEntityEnum and in TopaiEntityOperator. | Résolu | tchemit | Evolution | Normal | 2.6.9 | topia-persistence | 29/03/2012 à 02:12 |
| Updates to mavenpom 3.2 | | Résolu | tchemit | Tâche | Normal | 2.6.9 | dependencies | 29/03/2012 à 11:44 |
| Updates to nuiton-utils 2.4.6 | | Résolu | tchemit | Tâche | Normal | 2.6.9 | dependencies | 14/03/2012 à 02:36 |
| Migrate FilterPagerUtil from nuiton-web | Migration the org.nuiton.web.struts2.FilterPagerUtil from the project org.nuiton.web:nuiton-struts2.
This util class works on TopiaQuery, so it should be in Topia rather. | Résolu | - | Evolution | Normal | 2.6.9 | topia-persistence | 14/03/2012 à 02:20 |
| Bad index generated with indexForeignKeys for a many-2-many renamed relation | Generated code is
> CREATE INDEX idx_Contact_secondaryObservers ON contact_secondaryobservers(waoUser)
But it should be
> CREATE INDEX idx_Contact_secondaryObservers ON contact_secondaryobservers(contact) | Résolu | bleny | Anomalie | Normal | 2.6.9 | generation | 20/03/2012 à 02:34 |
| Clean tests in topia-persistence | Create a nice and simple TopiaDatabase rule to obtain an isolated db for each test. | Résolu | tchemit | Evolution | Normal | 2.6.8 | tests | 02/03/2012 à 11:06 |
| Updates to mavenpom 3.1.1 | | Résolu | tchemit | Tâche | Normal | 2.6.8 | dependencies | 10/02/2012 à 12:03 |
| Using IN in TopiaQuery does not work when using object list | This works fine with list of ids (string) but not with objects (parameter need to be wrapped by comma as Said by Arnaud :)) | Résolu | tchemit | Anomalie | Normal | 2.6.8 | topia-persistence | 02/03/2012 à 08:33 |
| Can not pass a list parameter in aTopiaQuery | While using a query with a list paremters, it does not work :
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String
org.hibernate.type.descriptor.java.StringTypeDescriptor.unwrap(StringTypeDescriptor.java:40)
org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$1.doBind(VarcharTypeDescriptor.java:52)
org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:91)
org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:283)
org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:278)
org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:67)
org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:578)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1716)
org.hibernate.loader.Loader.doQuery(Loader.java:801)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
org.hibernate.loader.Loader.doList(Loader.java:2542)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
org.hibernate.loader.Loader.list(Loader.java:2271)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:459)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:365)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
org.nuiton.topia.framework.TopiaContextImpl.find(TopiaContextImpl.java:1016)
due to this code :
if (value.getClass().isArray()) {
query.setParameterList(name, (Object[]) value);
} else {
query.setParameter(name, value);
}
Should be replace by :
if (value.getClass().isArray()) {
query.setParameterList(name, (Object[]) value);
} else if (value instanceof Collection>) {
query.setParameterList(name, (Collection>) value);
} else {
query.setParameter(name, value);
}
| Résolu | tchemit | Anomalie | Normal | 2.6.7 | topia-persistence | 20/02/2012 à 10:42 |
| Add operation IN and NOT_IN for TopiaQuery | | Résolu | tchemit | Evolution | Normal | 2.6.7 | topia-persistence | 20/02/2012 à 11:09 |
| dao.countByQuery does not work in some cases | This code is not correct if a mainalias and setselect and a distinct on a query
if (distinct && StringUtils.isNotEmpty(mainAlias)) {
count.append("DISTINCT ").append(mainAlias);
// When distinct is not set, use *
}
| Résolu | tchemit | Anomalie | Haut | 2.6.7 | topia-persistence | 01/02/2012 à 01:47 |
| Improve TopiaQuery | Usage of floating StringBuilder as internal state is not a good idea.
When user set, or add something, it is better to store it in concrete states (String, List).
The "StringBuilder" part can only be used to render the query | Résolu | tchemit | Evolution | Haut | 2.6.7 | topia-persistence | 01/02/2012 à 01:55 |
| Add TagValue for EntityDTOTransformer to add an "id" property | During generation of DTO from entities, it should be usefull to have a property "id", generate if a tagValue like "generateId" is given. | Résolu | ymartel | Evolution | Normal | 2.6.7 | generation | 18/01/2012 à 03:46 |
| Updates to hibernate 3.6.10 | | Résolu | tchemit | Tâche | Normal | 2.6.7 | dependencies | 15/02/2012 à 03:13 |
| Update to slf4j 1.6.4 | | Résolu | echatellier | Tâche | Normal | 2.6.6 | dependencies | 09/01/2012 à 11:26 |
| Generated code doesn't compile since #1855 | In DCF5CodeDAOAbstract#delete(E entity)
for (SampleRow item : list) {
item.removeDCF5Code(entity);
}
But generated operation is remove*d*CF5Code | Résolu | bleny | Anomalie | Normal | 2.6.6 | generation | 05/01/2012 à 11:11 |
| Update to hibernate 3.6.9.Final | | Résolu | echatellier | Tâche | Normal | 2.6.6 | dependencies | 09/01/2012 à 11:14 |
| Update to h2 1.3.163 | | Résolu | echatellier | Tâche | Normal | 2.6.6 | dependencies | 09/01/2012 à 11:25 |
| Update to nuiton-utils 2.4.1 | | Résolu | echatellier | Tâche | Normal | 2.6.6 | dependencies | 09/01/2012 à 11:25 |
| Updates to eugene 2.4.2 | Requires to solve #1855 | Résolu | tchemit | Tâche | Normal | 2.6.5 | dependencies | 19/12/2011 à 11:46 |
| New tagvalue indexForeignKeys to generate index on FK for nm-multiplicity attributes | This can improve a lot some treatments with huge amount of data. | Résolu | tchemit | Evolution | Normal | 2.6.5 | generation | 27/12/2011 à 03:17 |
| Bad property generation | If a property is named *aProperty*, then getter and setter should be
getaProperty()
setaProperty()
and not
getAProperty()
setAProperty()
| Résolu | tchemit | Anomalie | Urgent | 2.6.5 | generation | 19/12/2011 à 03:42 |
| Updates to hibernate 3.6.8.Final | | Résolu | tchemit | Tâche | Normal | 2.6.4 | dependencies | 28/10/2011 à 10:13 |
| Remove old hibernate namespace in mapping | there is still some references to old hibernate namespace (*http://hibernate.sourceforge.net/*).
Use now only this one : *http://www.hibernate.org/dtd/* | Résolu | tchemit | Anomalie | Normal | 2.6.4 | service migration | 28/10/2011 à 10:12 |
| Open TopiaSQLQuery api | Make this object more open to avoid usage of any hibernate api. | Résolu | tchemit | Evolution | Normal | 2.6.4 | topia-persistence | 12/11/2011 à 08:05 |
| Add methods to avoid expose hibernate api | Add
TopiaUtil.isSchemaExist(TopiaContext tx,String entityName)
to not use in this method from outside
TopiaUtil.isSchemaExist(Configuration configuration,String entityName)
| Résolu | tchemit | Evolution | Normal | 2.6.4 | topia-persistence | 12/11/2011 à 08:20 |
| Updates to nuiton-utils 2.3.1 | | Résolu | tchemit | Tâche | Normal | 2.6.4 | dependencies | 13/11/2011 à 05:12 |
| Updates to org.apache.commons.lang3 | Be ware the generated code will use now commons-lang3 so you will need the dependency :
org.apache.commons
commons-lang3
3.0.1
| Résolu | tchemit | Evolution | Normal | 2.6.4 | generation | 13/11/2011 à 05:08 |
| Do not force using "entity" stereotype on enumeration with QueryHelperTransformer | Enumeration type must be ignore to avoid creating object property for queries. Hibernate will consider enumeration as a simple type. | Résolu | fdesbois | Anomalie | Normal | 2.6.3 | topia-persistence | 25/09/2011 à 11:39 |
| Introduce the TopiaEntityEnum into the generated dao | this object can help to obtain contract, implementation inside the dao without doing any hardcoded things : all is generated :) | Résolu | tchemit | Evolution | Normal | 2.6.3 | topia-persistence | 03/10/2011 à 05:52 |
| Do not generate DAOImpl if already found in classpath | USe the same logic than for entity : if impl is found in class-path do not generateit. | Résolu | tchemit | Evolution | Normal | 2.6.3 | topia-persistence | 04/10/2011 à 09:08 |
| Remove code in generators that prevent generation of classes alerady in classpath | Instead, the added option in Eugene should deal with that #1771 | Résolu | tchemit | Evolution | Bas | 2.6.3 | generation | 11/10/2011 à 10:22 |
| Empty documentation on entities should not be generated | Now, this is generated when there is no documentation :
/**
* getDesign :
* @return boolean
*/
boolean getDesign();
It would be better to skip documentation generation in that case. | Résolu | tchemit | Evolution | Normal | 2.6.3 | generation | 11/10/2011 à 10:00 |
| Updates to eugene 2.4.1 | Requires for some new features | Résolu | athimel | Tâche | Normal | 2.6.3 | dependencies | 13/10/2011 à 05:12 |
| Improve the method TopiaDAOImpl.newInstance() | Please could we just avoid to do some hardcorded stuff like this :
result = ((Class) Class.forName(classname + "Impl"))
.newInstance();
A quick solution is to use the *org.nuiton.topia.persistence.TopiaEntityEnum#getImplementation().newInstance()* | Résolu | tchemit | Evolution | Normal | 2.6.3 | topia-persistence | 03/10/2011 à 05:07 |
| Hibernate mappings fails to load in offline mode | In offline mode, hibernate mapping dtd is downloaded from http://hibernate.org/.
Hibernate DTD resolver doesn't seams to work :( | Résolu | tchemit | Anomalie | Urgent | 2.6.3 | topia-persistence | 10/10/2011 à 10:35 |
| Do not generate delete method in DAOAbstract if not needed | | Résolu | tchemit | Evolution | Normal | 2.6.3 | generation | 19/10/2011 à 06:07 |
| add a executeSQL in TopiaContext | Some project still need to execute sql code over topia, using this method remove yet another link to hibernate in projects. | Résolu | tchemit | Evolution | Normal | 2.6.3 | topia-persistence | 14/10/2011 à 04:01 |
| Restore fails with recent h2 version | With current h2 version and topia, restore file fails with excetion:
Caused by: org.hibernate.exception.GenericJDBCException: could not execute
native bulk manipulation query
at
org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
at
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at
org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:219)
at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1300)
at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:365)
at
org.nuiton.topia.framework.TopiaContextImpl.restore(TopiaContextImpl.java:1338)
... 3 more
Caused by: org.h2.jdbc.JdbcSQLException: Timeout trying to lock table
"SYS"; SQL statement:
SET CLUSTER '' [50200-160]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.table.RegularTable.doLock(RegularTable.java:500)
at org.h2.table.RegularTable.lock(RegularTable.java:434)
at org.h2.engine.Database.lockMeta(Database.java:748)
at org.h2.engine.Database.addDatabaseObject(Database.java:862)
at org.h2.command.dml.Set.addOrUpdateSetting(Set.java:401)
at org.h2.command.dml.Set.update(Set.java:101)
at org.h2.command.dml.RunScriptCommand.execute(RunScriptCommand.java:66)
at org.h2.command.dml.RunScriptCommand.update(RunScriptCommand.java:45)
at org.h2.command.CommandContainer.update(CommandContainer.java:73)
at org.h2.command.Command.executeUpdate(Command.java:219)
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
at
org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:129)
at
org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:210)
... 6 more
| Rejeté | echatellier | Evolution | Normal | 2.6.3 | topia-persistence | 16/10/2011 à 10:11 |
| Improve generated java files | DAO and entities should be nice code, but still not :( | Résolu | tchemit | Evolution | Normal | 2.6.3 | generation | 20/10/2011 à 02:19 |
| Permits not to generate getXXX() methods for boolean properties on Entities | Apply the #1781 for entities generation. | Résolu | tchemit | Evolution | Normal | 2.6.3 | generation | 20/10/2011 à 06:21 |
| Cannot use a function on TopiaQuery | query.addWhere("lower(name)", TopiaQuery.Op.LIKE, "%" + nameToFind.toLowerCase() + "%");
The property name is used as parameterName, then in that case, parameterName is ":lower(name)" which fails at runtime | Résolu | athimel | Anomalie | Normal | 2.6.2 | topia-persistence | 21/09/2011 à 09:16 |
| Can not use enumeration in model and QueryHelperTransformer | Properties for field of type Enum are not generated, thus generated QueryHelper doesn't compile | Résolu | fdesbois | Anomalie | Normal | 2.6.2 | generation | 01/08/2011 à 10:23 |
| Cannot use MyDAO.create(My.PROPERTY_CLIENT) with isClient() method | When I have 2 entities (contact, client) with an association from contact to client, I will have some getClient():Client and setClient(client):void on the generated contact entity. fine.
I also need a method on contact which is isClient():boolean.
When doing :
contactDAO.create(Contact.PROPERTY_CLIENT, null);
I get :
java.lang.IllegalArgumentException: Can't put properties on new Object
at org.nuiton.topia.persistence.TopiaDAOImpl.create(TopiaDAOImpl.java:353)
at org.nuiton.topia.persistence.TopiaDAOImpl.create(TopiaDAOImpl.java:318)
at org.nuiton.topia.testproperty.TopiaPropertyTest.testCreateContact(TopiaPropertyTest.java:28)
Caused by: java.lang.NoSuchMethodException: Property 'client' has no setter method in class 'class org.nuiton.topia.testproperty.ContactImpl'
at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2138)
at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1957)
at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:2064)
at org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:858)
at org.nuiton.topia.persistence.TopiaDAOImpl.create(TopiaDAOImpl.java:344)
... 28 more
If a rename either then method or the association, it works fine.
(See standalone test module in topia-test-property.tgz) | Résolu | tchemit | Anomalie | Normal | 2.6.2 | topia-persistence | 29/07/2011 à 09:04 |
| Improve generators | In Entity like generators,
- add missing serialVersionUID
- do not generate interfaces when not needed. | Résolu | tchemit | Evolution | Normal | 2.6.2 | generation | 29/08/2011 à 06:36 |
| Some messages of the validation of a model are not correct | It displays often a attribute name is already defined but this is not true :)
Just do not display this error when attribute is not navigable. | Résolu | tchemit | Anomalie | Normal | 2.6.2 | generation | 22/09/2011 à 12:22 |
| Model errors validation should not be displayed as info! at least they are warning | | Résolu | tchemit | Evolution | Normal | 2.6.2 | generation | 22/09/2011 à 12:18 |
| Cannot create TopiaContext when using an abstract class | Vehicle is an abstract entity in my model. At runtime, it will produce :
resource: org/nuiton/topia/testabstract/VehicleImpl.hbm.xml not found
(See standalone test module in topia-test-abstract.tgz) | Résolu | tchemit | Anomalie | Normal | 2.6.2 | generation | 29/07/2011 à 08:52 |
| updates to hibernate 3.6.7.Final | | Résolu | tchemit | Tâche | Normal | 2.6.2 | dependencies | 18/08/2011 à 07:39 |
| add missing constants for field on TopiaEntity | In interface TopiaEntity, there are already 3 constants for the name of the properties of a topia entity
String TOPIA_ID = "topiaId";
String TOPIA_CREATE_DATE = "topiaCreateDate";
String TOPIA_VERSION = "topiaVersion";
Some are missing and should be added:
String COMPOSITE = "composite";
String AGGREGATE = "aggregate";
And for legacy-mode:
String TOPIA_CONTEXT = "topiaContext";
| Résolu | tchemit | Evolution | Bas | 2.6.2 | topia-persistence | 18/08/2011 à 09:51 |
| Updates to eugene 2.4 | | Résolu | tchemit | Tâche | Normal | 2.6.2 | dependencies | 12/09/2011 à 01:10 |
| DAO set null taget entity when delete association | Ex :
A 1-* B (- étant une association bidirectionnel de 1 vers *)
Collection bs = a1.getBs()
a2.addAllB(bs);
for (B b : bs) {
b.setA(a2);
}
a1.clearB();
aDAO.delete(a1);
Lors du delete il set (dans bs) à null toute les anciennes références à a1, ce qui ici n'est pas correct, il devrait faire un check pour savoir si c'est bien lui (a1) qui est concerné avant de les setter à null. | Résolu | sletellier | Anomalie | Normal | 2.6.2 | topia-persistence | 01/09/2011 à 05:17 |
| Cannot compile with N multiplicity to an enumeration | When generating the following model :
Contact --[1]----------[1..*]--> ContactType
Compilation fails in ContactAbstract on :
@Override
public ContactType getContactTypeByTopiaId(String topiaId) {
return TopiaEntityHelper.getEntityByTopiaId(contactType, topiaId);
}
when ContactType is an enum, not a TopiaEntity
Attached is a sample project for this bug. | Résolu | tchemit | Anomalie | Normal | 2.6.2 | generation | 05/09/2011 à 11:11 |
| Updates to nuiton-utils 2.3 | | Résolu | tchemit | Tâche | Normal | 2.6.2 | dependencies | 12/09/2011 à 12:45 |
| Add TopiaTransactionAware | Move it from nuiton-struts | Résolu | tchemit | Evolution | Normal | 2.6.1 | topia-persistence | 07/07/2011 à 02:31 |
| Updates to hibernate 3.6.6.Final | | Résolu | tchemit | Evolution | Normal | 2.6.1 | dependencies | 21/07/2011 à 06:38 |
| Updates to nuiton-i18n 2.4.1 | | Résolu | tchemit | Evolution | Normal | 2.6.1 | dependencies | 04/08/2011 à 05:33 |
| Updates to eugene 2.3.5 | This is a requirement to resolv #1307 | Résolu | tchemit | Evolution | Normal | 2.6 | dependencies | 21/06/2011 à 09:32 |
| Make topia-replication-service works with hibernate > 3.5 | Hibernate session was completly reviewed since version 3.4 and the code of this service does not work anylonger :( | Résolu | tchemit | Anomalie | Normal | 2.6 | topia-persistence | 24/05/2011 à 09:08 |
| Updates to hibernate 3.6.5.Final | | Résolu | tchemit | Evolution | Normal | 2.6 | topia-persistence | 08/04/2010 à 04:14 |
| topia-persistence does not build (some test are failing) when using hibernate 3.5.6 | org.nuiton.topia.framework.TopiaContextImplTest :
testGetHibernateFactory(org.nuiton.topia.framework.TopiaContextImplTest) Time elapsed: 0.047 sec <<< FAILURE!
java.lang.AssertionError:
at org.junit.Assert.fail(Assert.java:91)
at org.junit.Assert.assertTrue(Assert.java:43)
at org.junit.Assert.assertNotNull(Assert.java:524)
at org.junit.Assert.assertNotNull(Assert.java:535)
at org.nuiton.topia.framework.TopiaContextImplTest.testGetHibernateFactory(TopiaContextImplTest.java:271)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
at $Proxy0.invoke(Unknown Source)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
org.nuiton.topia.framework.TopiaUtilTest :
testIsSchemaExist(org.nuiton.topia.framework.TopiaUtilTest) Time elapsed: 0.003 sec <<< ERROR!
java.lang.IllegalArgumentException: could not find entity with name org.nuiton.topia.test.entities.PersonImpl
at org.nuiton.topia.framework.TopiaUtil.isSchemaExist(TopiaUtil.java:185)
at org.nuiton.topia.framework.TopiaUtilTest.testIsSchemaExist(TopiaUtilTest.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
at $Proxy0.invoke(Unknown Source)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
| Résolu | tchemit | Anomalie | Normal | 2.6 | topia-persistence | 24/05/2011 à 09:13 |
| Updates to mavenpom 2.5.5 | | Résolu | tchemit | Evolution | Normal | 2.6 | dependencies | 03/06/2011 à 01:24 |
| Updates to sl4j 1.6.1 | | Résolu | tchemit | Evolution | Normal | 2.6 | dependencies | 26/05/2011 à 07:22 |
| Updates to h2 1.3.157 | | Résolu | tchemit | Evolution | Normal | 2.6 | dependencies | 26/05/2011 à 07:20 |
| Mapping : manage transparently Enumeration type | To map an enumeration in database we can use two different strategies : STRING or ORDINAL.
- The EntityTransformer could generate getter/setter code for hibernate (String/int > mapped over the enum) and for the entity (Enum)
- The strategy could be set to ORDINAL by default and customizable using tagValue : my.entity.fqn.attribute.enumName.tagvalue.enumerated=STRING
This behavior will be the same as in JPA when using @Enumerated annotation. | Résolu | bleny | Evolution | Normal | 2.6 | topia-persistence | 09/02/2011 à 03:21 |
| Updates to eugene 2.3.4 | | Résolu | tchemit | Evolution | Normal | 2.5.4 | dependencies | 15/05/2011 à 08:36 |
| Remove log generation in ServiceTransformer | Must use other profiling tools such as TimeLog in nuiton-utils.
This support will impact projects using noLog tagvalue to avoid this generation.
It's seems to be the best default usage to never generate those logs. | Résolu | fdesbois | Evolution | Normal | 2.5.4 | generation | 16/04/2011 à 11:17 |
| Merge all transformers for DAO in one unique Transformer | Same thing as entities generation. | Résolu | tchemit | Evolution | Normal | 2.5.4 | generation | 14/05/2010 à 03:58 |
| Integrates spanish i18n translations | | Résolu | tchemit | Evolution | Normal | 2.5.4 | - | 28/04/2011 à 02:42 |
| Updates to nuiton-utils 2.2 | | Résolu | tchemit | Evolution | Normal | 2.5.4 | dependencies | 28/04/2011 à 02:48 |
| Add a findAllContainsXXX and findContainsXXX method in generated dao for collection properties | When having a collection property named *A* on an entity, we want in the dao the method findAllContainsA(a : A) : List.
the method will return all entities containing at least the given property.
this methods exists before version 2.4 but where removed (can't remember why but it was a mistake). Put them back and use them for example in the findUsage method. | Résolu | tchemit | Evolution | Normal | 2.5.4 | generation | 12/05/2011 à 03:35 |
| generated findUsages in DAO are not correct | * If the usage is on a collection, then still use a *findAllByProperties* which is not correct.
Moreover as we have the specific dao, so we could specific methods aka *findAllByOcean* for example | Résolu | tchemit | Anomalie | Urgent | 2.5.4 | topia-persistence | 12/05/2011 à 03:32 |
| Updates to i18n 2.4 (using utf-8 i18n files) | As i18n can deal with others encoding than US-ASCII, we prefer now to use the UTF-8. | Résolu | tchemit | Evolution | Normal | 2.5.4 | dependencies | 12/05/2011 à 07:53 |
| Updates to nuiton-utils 2.1.1 | | Résolu | tchemit | Evolution | Normal | 2.5.3 | dependencies | 25/03/2011 à 12:47 |
| Allow to define order for service loading | Dans mon cas, j'ai le service de migration qui est démarré avant le service de sécurité, hors, ce dernier doit charger les entités de sécurité. Il doit donc être exécuter avant. Il faudrait trouver un moyen élégant de rajouter un ordre des services à démarrer. | Rejeté | - | Anomalie | Urgent | 2.5.3 | topia-persistence | 01/04/2011 à 10:19 |
| Use set implementation to prevent double persistance class registration | Dans mon cas j'ai des entités persistantes dans une lib externe, lors de la création d'un nouveau context, hibernate n'aime pas car elles sont déclaré 2 fois, une fois par le service topia et par mon application (ex : "Caused by: org.hibernate.DuplicateMappingException: Duplicate collection role mapping org.nuiton.topia.taas.entities.TaasUserImpl.principals"). Nous devrions passer par un Set les classes persistantes pour prévenir ce genre de problème. | Résolu | sletellier | Anomalie | Normal | 2.5.3 | topia-persistence | 11/04/2011 à 03:02 |
| NPE in generation if DAO stereotype | | Résolu | tchemit | Anomalie | Normal | 2.5.3 | generation | 07/03/2011 à 09:27 |