Re: Float primary key?

2007-04-11 Thread Kevin Sutter

Dain,
When you mention the CMP test suite are you referring to the CTS TCK?  If
so, how does CMP correspond to EJB's and their use of JPA (in the EJB3
sense)?  I understand your request.  I'm just trying to understand whether
this is a requirement or just a bad test case in the CTS TCK.  The JPA
spec is pretty clear that approximate types should never be used for primary
keys -- although I suppose you could read it that some providers could allow
this use.  It just wouldn't be portable.

Kevin

On 4/10/07, Dain Sundstrom [EMAIL PROTECTED] wrote:


I know it is a really really really stupid idea to use an approximate
type at a primary key, but there is a test in the CMP test suite that
uses a float for a primary key.  When I deploy this bean, I get an
exception like the following:

Caused by: 0.9.7-incubating-SNAPSHOT fatal user error
org.apache.openjpa.persistence.ArgumentException: Type class
foo.FloatBeanEJB declares field cmpID as a primary key, but keys
of type java.lang.Float are not supported.
 at org.apache.openjpa.meta.ClassMetaData.validateAppIdClass
(ClassMetaData.java:1800)
 at org.apache.openjpa.meta.ClassMetaData.validateIdentity
(ClassMetaData.java:1779)
 at org.apache.openjpa.meta.ClassMetaData.validateMeta
(ClassMetaData.java:1696)
 at org.apache.openjpa.meta.ClassMetaData.resolve
(ClassMetaData.java:1569)
 at org.apache.openjpa.meta.MetaDataRepository.processBuffer
(MetaDataRepository.java:656)
 at org.apache.openjpa.meta.MetaDataRepository.resolveMeta
(MetaDataRepository.java:556)
 at org.apache.openjpa.meta.MetaDataRepository.resolve
(MetaDataRepository.java:481)
 at org.apache.openjpa.meta.MetaDataRepository.getMetaData
(MetaDataRepository.java:285)
 at org.apache.openjpa.meta.MetaDataRepository.resolveMeta
(MetaDataRepository.java:521)
 at org.apache.openjpa.meta.MetaDataRepository.resolve
(MetaDataRepository.java:481)
 at org.apache.openjpa.meta.MetaDataRepository.getMetaData
(MetaDataRepository.java:285)
 at org.apache.openjpa.jdbc.meta.MappingRepository.getMapping
(MappingRepository.java:276)
 at org.apache.openjpa.jdbc.meta.MappingTool.getMapping
(MappingTool.java:667)
 at org.apache.openjpa.jdbc.meta.MappingTool.buildSchema
(MappingTool.java:739)
 at org.apache.openjpa.jdbc.meta.MappingTool.run(MappingTool.java:
637)
 at
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings
(JDBCBrokerFactory.java:161)
 at org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl
(JDBCBrokerFactory.java:127)
 at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker
(AbstractBrokerFactory.java:171)
 at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker
(DelegatingBrokerFactory.java:139)
 at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityMana
ger(EntityManagerFactoryImpl.java:187)
 at
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityMana
ger(EntityManagerFactoryImpl.java:52)

Is there any way I can turn off this warning?  Maybe we can add an
AllowStupidApproximatePrimaryKeys flag.

Please :)

-dain



Re: Float primary key?

2007-04-11 Thread Abe White
I believe that OpenJPA will allow float pk fields, it's just that  
there's no built-in id class for them (see util.LongId, ShortId,  
etc).  So you'd have to either add a built-in id class and alter  
OpenJPA's internal code to use it appropriately, or create your own  
id class and use it via the @IdClass annotation, as you would for a  
compound pk.

Notice:  This email message, together with any attachments, may contain 
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated 
entities,  that may be confidential,  proprietary,  copyrighted  and/or legally 
privileged, and is intended solely for the use of the individual or entity 
named in this message. If you are not the intended recipient, and have received 
this message in error, please immediately return this by email and then delete 
it.


Re: Float primary key?

2007-04-11 Thread Abe White
 Although the spec clearly recommends against the use of floating  
 points,
 floats are a primitive type (or the Float wrapper) and need to be  
 allowed.
 With no special AllowStupidApproximatePrimaryKeys flag.  :-)

 Am I trying to read too much into the spec or Dain's request?  This  
 seems to
 be something that we need to support.

Given the spec section you quoted, you're definitely right.  It's  
something we need to support.

Notice:  This email message, together with any attachments, may contain 
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated 
entities,  that may be confidential,  proprietary,  copyrighted  and/or legally 
privileged, and is intended solely for the use of the individual or entity 
named in this message. If you are not the intended recipient, and have received 
this message in error, please immediately return this by email and then delete 
it.


Re: Float primary key?

2007-04-11 Thread Dain Sundstrom

On Apr 11, 2007, at 7:28 AM, Kevin Sutter wrote:

Okay, I looked at the spec a bit closer and it looks like we need  
to allow

for floats as primary keys:

The primary key (or field or property of a composite primary key)  
should be

one of the following types:
any Java primitive type; any primitive wrapper type; java.lang.String;
java.util.Date;
java.sql.Date. In general, however, approximate numeric types (e.g.,
floating point types) should
never be used in primary keys.

Although the spec clearly recommends against the use of floating  
points,
floats are a primitive type (or the Float wrapper) and need to be  
allowed.

With no special AllowStupidApproximatePrimaryKeys flag.  :-)

Am I trying to read too much into the spec or Dain's request?  This  
seems to

be something that we need to support.


That's all I needed.

Thanks,

-dain