Indeed the enhancer is involved in the game. But I had hoped to _not_ need to change the enhancer itself. It just needs to pickup the field as persistent.
At the end what I like to achieve is that those fields are really handled the same like PersistenceStrategy.BASIC. With the only difference that a @Basic field currently needs to be Serializable. This check is done pretty early - even before the FieldStrategies get parsed. So we might be fine to fully remove this check or at least somehow postpone it to a later stage and skip the check if we know if a Strategy/ValueHandler is applied to this field. At least I have no better idea at this moment ;) LieGrue, strub > Am 01.07.2015 um 12:53 schrieb Rick Curtis <curti...@gmail.com>: > > I'm just shooting in the dark here, but I wonder if you need to make > changes to the enhancer in addition to the metadatarepo..... then again its > quite early so I might be way off in left field. > > On Tue, Jun 30, 2015 at 2:53 PM, Mark Struberg <strub...@yahoo.de> wrote: > >> Hi Rick! >> >> I’m trying to finally solve the long outstanding issue that our @Strategy >> and FieldStrategies configuration is pretty much broken. See >> https://issues.apache.org/jira/browse/OPENJPA-2341 >> It is broken if the type you like to store is not Serializable. E.g. >> (taken from my current unit test): >> >> >> @Strategy("org.apache.openjpa.persistence.strategy.value.PrincipalValueStrategyHandler") >> private Principal user; >> >> This blows up because OpenJPA totally ignores this field (as it is not any >> of the spec defined types and the Strategy gets ignored). I was not able to >> get it working by adding @Basic (blows up complaining that the field is not >> Serializable), @Column (just ignored), @Persistent (complains about tons of >> other stuff). >> >> It ‚accidentially‘ works with Serializable classes because those get >> picked up as BASIC. Like joda and java8 LocalDate for example. >> >> But they are not really @Basic! >> If you take the sample above, then the representation of the instance in >> the entity has _nothing_ to do with the final representation in the >> database. That could e.g. simply store that info in a VARCHAR(20) >> >> I gonna attach my current wip to the JIRA. >> >> Not sure whether we should ty to cleanly sovle this or back up and just >> commit what I have now which at least works for Serializable fields. >> >> LieGrue, >> strub >> >> >>> Am 30.06.2015 um 21:22 schrieb Rick Curtis <curti...@gmail.com>: >>> >>> Any more context as to the problem you're running into/trying to solve? >>> >>> On Tue, Jun 30, 2015 at 11:31 AM, Mark Struberg <strub...@yahoo.de> >> wrote: >>> >>>> Hi folks! >>>> >>>> I sense some chicken-egg proglem with FieldMapping and what field >> becomes >>>> a persistent column. >>>> >>>> The point is that only fields which have a valid FieldMapping will >> become >>>> a persistent column. >>>> >>>> Currently the main check - as far as I do understand so far - is in >>>> PersistenceMetaDataDefaults#getPersistenceStrategy. >>>> Only fields which have some specific mapping annotations >>>> (PersistenceMetaDataDefaults#_strats) or implement Serializable get >>>> automatically picked up. Other classes get totally ignored. Even if I >>>> explicitly have a @Strategy annotation on them or if I register global >>>> FieldStrategies. >>>> >>>> I cannot extend the _strats to @Strategy.class as >>>> PersistenceMetaDataDefaults is defined in openjpa-persistence but >> Strategy >>>> is only defined later in openjpa-persistence-jdbc. >>>> >>>> What we could possibly do is to extend _attrs with the @Column >> annotation >>>> class? >>>> >>>> Any other ideas? >>>> >>>> LieGrue, >>>> strub >>> >>> >>> >>> >>> -- >>> *Rick Curtis* >> >> > > > -- > *Rick Curtis*