I tried it with the numeric constant, the problem ist almost the same - with
that difference that now there are TWO pairs of extra quotes!

Here is the stack trace:

<openjpa-2.1.0-r422266:1071316 fatal user error>
org.apache.openjpa.persistence.ArgumentException:
"com.dcs.dataimport.vesta.objects.Seasontime.boardAdditions" defines a
target of """1""" for join column "add_type", but that target does not exist
in table "vesta.seasontime".
FailedObject: com.dcs.dataimport.vesta.objects.HotelObject@2f63e9a1
[java.lang.String]
        at
org.apache.openjpa.jdbc.meta.MappingInfo.mergeJoinColumn(MappingInfo.java:15
33)
        at
org.apache.openjpa.jdbc.meta.MappingInfo.createJoins(MappingInfo.java:1322)
        at
org.apache.openjpa.jdbc.meta.MappingInfo.createForeignKey(MappingInfo.java:1
084)
        at
org.apache.openjpa.jdbc.meta.FieldMappingInfo.getJoin(FieldMappingInfo.java:
213)
        at
org.apache.openjpa.jdbc.meta.FieldMappingInfo.getJoin(FieldMappingInfo.java:
182)
        at
org.apache.openjpa.jdbc.meta.FieldMapping.mapJoin(FieldMapping.java:585)
        at
org.apache.openjpa.jdbc.meta.strats.HandlerCollectionTableFieldStrategy.map(
HandlerCollectionTableFieldStrategy.java:108)
        at
org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:146)
        at
org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(Runtim
eStrategyInstaller.java:82)
        at
org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.java:4
96)
        at
org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:461)
        at
org.apache.openjpa.jdbc.meta.ClassMapping.resolveMapping(ClassMapping.java:8
54)
        at
org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1801)
        at
org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.
java:822)
        at
org.apache.openjpa.meta.MetaDataRepository.resolveMapping(MetaDataRepository
.java:777)
        at
org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:6
57)
        at
org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepos
itory.java:411)
        at
org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.ja
va:384)
        at
org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:247)
        at
org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:104)
        at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3429)
        at
org.apache.openjpa.kernel.DelegatingBroker.attach(DelegatingBroker.java:1206
)
        at
org.apache.openjpa.persistence.EntityManagerImpl.merge(EntityManagerImpl.jav
a:869)


Hopefully it will help. However the error seems to occur before, as the
target object is created. I bet on DBIdentifier.setName(String name, boolean
delimit).

Kind regards,
Michael Spiro

> -----Ursprüngliche Nachricht-----
> Von: Rick Curtis [mailto:curti...@gmail.com]
> Gesendet: Freitag, 30. September 2011 15:52
> An: users@openjpa.apache.org
> Betreff: Re: Join with a constant value
> 
> Can you post a stack trace of the failure?
> 
> Thanks,
> Rick
> 
> On Fri, Sep 30, 2011 at 8:35 AM, Michael Spiro <m.spiro@dcs-
> caesar.de>wrote:
> 
> > Hi,
> >
> >
> >
> > I've got a problem with OpenJPA trying to make a join with a constant
> > value.
> >
> >
> >
> > According to the documentation, one can specify a constant value for
> a join
> > column, so that only records with this value in this column will be
> joined.
> > The constant value should be specified in the attribute
> > "referencedColumnName" of the @JoinColumn annotation. If the constant
> is a
> > string then its value should be enclosed first in single quotes and
> then in
> > double quotes like this:
> >
> >
> >
> > @JoinColumn(name="table.column", referencedColumnName="'value'")
> >
> >
> >
> > However, this declaration fails as I run my application. I debugged
> it and
> > found out something that looks like a possible bug. The method
> MappingInfo.
> > mergeJoinColumn() identifies the target of the join as a string
> constant if
> > its first character is a single quote (as it's described in the
> docs).
> > However, as this check takes place the value is already enclosed in
> one
> > extra pair of double quotes (in my example it's " "'value'"  ") and
> the
> > check fails.
> >
> >
> >
> > I tried some different variations for the declaration like escaping
> the
> > quote sign with backslash or using double quotes, but this all
> doesn't
> > help.
> > I'm running OpenJPA  2.1.0 under JDK 1.6.0_25 and Windows, the
> default
> > locale should be German. Is this a bug or maybe can I succeed with a
> > slightly different declaration?
> >
> >
> >
> > As workaround I'll try to use a numeric constant, I hope this will
> work.
> >
> >
> >
> > Kind regards,
> >
> > Michael Spiro
> >
> >
> 
> 
> --
> *Rick Curtis*

Reply via email to