Home » Modeling » EMF "Technology" (Ecore Tools, EMFatic, etc) » [Teneo] Identifier for my objects
[Teneo] Identifier for my objects [message #86983] |
Thu, 21 June 2007 09:43 |
Eclipse User |
|
|
|
Originally posted by: gonzalinlinWITHOUT_THIS.tiscali.es
Hi Martin!
I've designed my model using EMF, and then generated my hibernate.hbm.xml
mapping file using Teneo. This is for a web application.
Here is an excerpt:
<!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
<hibernate-mapping>
<class entity-name="Factura" abstract="false" lazy="false"
discriminator-value="Factura" table="`factura`">
<meta attribute="eclassName">Factura</meta>
<meta attribute="epackage">http://productoexpediente.factura</meta>
<id type="long" name="e_id" column="e_id"
access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
So Teneo creates an id called "e_id", but I haven't any id in my classes.
My question is: Must all my objects extend a class (for example:
"AbstractObject") with an attribute "id"?
If I execute the method findAll() in the DAO, How can I retrieve the
attributes of a particular instance returned by findAll()? I suppose I need
the id of that instance, so how can I get that id to retrieve the other
attributes?
Thank you again!
With regards,
Gonzalo
|
|
|
Re: [Teneo] Identifier for my objects [message #86998 is a reply to message #86983] |
Thu, 21 June 2007 10:08 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi Gonzalo,
The synthetic id is automatically added by Teneo to every type which does not have an explicit id
property (i.e. annotated with the @id property). In general it is better/easier to have an explicit
id property.
You can add an id efeature to each eclass to solve this.
Or as you suggest you can create an (abstract) super type which has an id feature. All types will
then inherit from this abstract superclass. As a default Teneo will create a table for this abstract
super class also. If you don't want that then you need to set the @MappedSuperclass annotation in
the abstract supertype.
If you choose to add an id efeature to each type then it can be an idea to define a separate
edatatype for the id. The @id annotation can then be set in this edatatype. Probably the id is an
auto-increment long (or something similar), in this case you should also add the @GeneratedValue
annotation to the id edatatype/efeature.
Note that the above also applies to the version concept. It is better in general to have an explicit
version efeature also in your model. Although it is not to nice to have such an explicit 'low-level'
concept in the business model it is required when you (de-)serialize your objects.
gr. Martin
Gonzalo wrote:
> Hi Martin!
>
> I've designed my model using EMF, and then generated my hibernate.hbm.xml
> mapping file using Teneo. This is for a web application.
> Here is an excerpt:
>
> <!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
> <hibernate-mapping>
>
> <class entity-name="Factura" abstract="false" lazy="false"
> discriminator-value="Factura" table="`factura`">
>
> <meta attribute="eclassName">Factura</meta>
>
> <meta attribute="epackage">http://productoexpediente.factura</meta>
>
> <id type="long" name="e_id" column="e_id"
> access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
>
> So Teneo creates an id called "e_id", but I haven't any id in my classes.
>
> My question is: Must all my objects extend a class (for example:
> "AbstractObject") with an attribute "id"?
>
> If I execute the method findAll() in the DAO, How can I retrieve the
> attributes of a particular instance returned by findAll()? I suppose I need
> the id of that instance, so how can I get that id to retrieve the other
> attributes?
>
> Thank you again!
>
> With regards,
>
> Gonzalo
>
>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
| |
Re: [Teneo] Identifier for my objects [message #88268 is a reply to message #86998] |
Thu, 05 July 2007 14:18 |
Eclipse User |
|
|
|
Originally posted by: FIRSTNAME.LASTNAME.sphere.ae
Hi,
We tried that, but got ...
org.hibernate.id.IdentifierGenerationException: this id generator
generates long, integer, short
.... when saving something.
Our annotation.xml looks like this
[...]
<edatatype name="IdentifierType">
<generated-value />
<id />
</edatatype>
[...]
the generated mapping XML:
[...]
<id name="id" type="to.IdentifierType">
<column not-null="true" unique="true" name="`id`"/>
<generator class="native"/>
</id>
[...]
Hibernate expect to see "long" in the type-attribute... but we're ran
out of ideas how to get from our EDataType to long...
Thanks in advance,
Tom.
Martin Taal wrote:
> Hi Gonzalo,
> The synthetic id is automatically added by Teneo to every type which
> does not have an explicit id property (i.e. annotated with the @id
> property). In general it is better/easier to have an explicit id property.
> You can add an id efeature to each eclass to solve this.
> Or as you suggest you can create an (abstract) super type which has an
> id feature. All types will then inherit from this abstract superclass.
> As a default Teneo will create a table for this abstract super class
> also. If you don't want that then you need to set the @MappedSuperclass
> annotation in the abstract supertype.
>
> If you choose to add an id efeature to each type then it can be an idea
> to define a separate edatatype for the id. The @id annotation can then
> be set in this edatatype. Probably the id is an auto-increment long (or
> something similar), in this case you should also add the @GeneratedValue
> annotation to the id edatatype/efeature.
>
> Note that the above also applies to the version concept. It is better in
> general to have an explicit version efeature also in your model.
> Although it is not to nice to have such an explicit 'low-level' concept
> in the business model it is required when you (de-)serialize your objects.
>
> gr. Martin
>
> Gonzalo wrote:
>> Hi Martin!
>>
>> I've designed my model using EMF, and then generated my
>> hibernate.hbm.xml mapping file using Teneo. This is for a web
>> application.
>> Here is an excerpt:
>>
>> <!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
>> <hibernate-mapping>
>>
>> <class entity-name="Factura" abstract="false" lazy="false"
>> discriminator-value="Factura" table="`factura`">
>>
>> <meta attribute="eclassName">Factura</meta>
>>
>> <meta attribute="epackage">http://productoexpediente.factura</meta>
>>
>> <id type="long" name="e_id" column="e_id"
>> access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
>>
>>
>> So Teneo creates an id called "e_id", but I haven't any id in my classes.
>>
>> My question is: Must all my objects extend a class (for example:
>> "AbstractObject") with an attribute "id"?
>>
>> If I execute the method findAll() in the DAO, How can I retrieve the
>> attributes of a particular instance returned by findAll()? I suppose I
>> need the id of that instance, so how can I get that id to retrieve the
>> other attributes?
>>
>> Thank you again!
>>
>> With regards,
>>
>> Gonzalo
>>
>>
>
>
|
|
|
Re: [Teneo] Identifier for my objects [message #88298 is a reply to message #88268] |
Thu, 05 July 2007 16:58 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
How does the ecore for this eDataType look like?
Does it have an instance class name set? You can try java.lang.Long or long.
gr. Martin
Thomas Kuhn wrote:
> Hi,
>
> We tried that, but got ...
>
> org.hibernate.id.IdentifierGenerationException: this id generator
> generates long, integer, short
>
> .... when saving something.
>
> Our annotation.xml looks like this
>
> [...]
> <edatatype name="IdentifierType">
> <generated-value />
> <id />
> </edatatype>
> [...]
>
> the generated mapping XML:
>
> [...]
> <id name="id" type="to.IdentifierType">
> <column not-null="true" unique="true" name="`id`"/>
> <generator class="native"/>
> </id>
> [...]
>
> Hibernate expect to see "long" in the type-attribute... but we're ran
> out of ideas how to get from our EDataType to long...
>
> Thanks in advance,
>
> Tom.
>
>
>
>
> Martin Taal wrote:
>> Hi Gonzalo,
>> The synthetic id is automatically added by Teneo to every type which
>> does not have an explicit id property (i.e. annotated with the @id
>> property). In general it is better/easier to have an explicit id
>> property.
>> You can add an id efeature to each eclass to solve this.
>> Or as you suggest you can create an (abstract) super type which has an
>> id feature. All types will then inherit from this abstract superclass.
>> As a default Teneo will create a table for this abstract super class
>> also. If you don't want that then you need to set the
>> @MappedSuperclass annotation in the abstract supertype.
>>
>> If you choose to add an id efeature to each type then it can be an
>> idea to define a separate edatatype for the id. The @id annotation can
>> then be set in this edatatype. Probably the id is an auto-increment
>> long (or something similar), in this case you should also add the
>> @GeneratedValue annotation to the id edatatype/efeature.
>>
>> Note that the above also applies to the version concept. It is better
>> in general to have an explicit version efeature also in your model.
>> Although it is not to nice to have such an explicit 'low-level'
>> concept in the business model it is required when you (de-)serialize
>> your objects.
>>
>> gr. Martin
>>
>> Gonzalo wrote:
>>> Hi Martin!
>>>
>>> I've designed my model using EMF, and then generated my
>>> hibernate.hbm.xml mapping file using Teneo. This is for a web
>>> application.
>>> Here is an excerpt:
>>>
>>> <!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
>>> <hibernate-mapping>
>>>
>>> <class entity-name="Factura" abstract="false" lazy="false"
>>> discriminator-value="Factura" table="`factura`">
>>>
>>> <meta attribute="eclassName">Factura</meta>
>>>
>>> <meta attribute="epackage">http://productoexpediente.factura</meta>
>>>
>>> <id type="long" name="e_id" column="e_id"
>>> access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
>>>
>>>
>>> So Teneo creates an id called "e_id", but I haven't any id in my
>>> classes.
>>>
>>> My question is: Must all my objects extend a class (for example:
>>> "AbstractObject") with an attribute "id"?
>>>
>>> If I execute the method findAll() in the DAO, How can I retrieve the
>>> attributes of a particular instance returned by findAll()? I suppose
>>> I need the id of that instance, so how can I get that id to retrieve
>>> the other attributes?
>>>
>>> Thank you again!
>>>
>>> With regards,
>>>
>>> Gonzalo
>>>
>>>
>>
>>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [Teneo] Identifier for my objects [message #88314 is a reply to message #88298] |
Thu, 05 July 2007 16:59 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
I forgot to mention that after changing the ecore you have to re-generate your java code to get the
ecore change into the runtime ecore model.
gr. Martin
Martin Taal wrote:
> How does the ecore for this eDataType look like?
> Does it have an instance class name set? You can try java.lang.Long or
> long.
>
> gr. Martin
>
> Thomas Kuhn wrote:
>> Hi,
>>
>> We tried that, but got ...
>>
>> org.hibernate.id.IdentifierGenerationException: this id generator
>> generates long, integer, short
>>
>> .... when saving something.
>>
>> Our annotation.xml looks like this
>>
>> [...]
>> <edatatype name="IdentifierType">
>> <generated-value />
>> <id />
>> </edatatype>
>> [...]
>>
>> the generated mapping XML:
>>
>> [...]
>> <id name="id" type="to.IdentifierType">
>> <column not-null="true" unique="true" name="`id`"/>
>> <generator class="native"/>
>> </id>
>> [...]
>>
>> Hibernate expect to see "long" in the type-attribute... but we're ran
>> out of ideas how to get from our EDataType to long...
>>
>> Thanks in advance,
>>
>> Tom.
>>
>>
>>
>>
>> Martin Taal wrote:
>>> Hi Gonzalo,
>>> The synthetic id is automatically added by Teneo to every type which
>>> does not have an explicit id property (i.e. annotated with the @id
>>> property). In general it is better/easier to have an explicit id
>>> property.
>>> You can add an id efeature to each eclass to solve this.
>>> Or as you suggest you can create an (abstract) super type which has
>>> an id feature. All types will then inherit from this abstract
>>> superclass. As a default Teneo will create a table for this abstract
>>> super class also. If you don't want that then you need to set the
>>> @MappedSuperclass annotation in the abstract supertype.
>>>
>>> If you choose to add an id efeature to each type then it can be an
>>> idea to define a separate edatatype for the id. The @id annotation
>>> can then be set in this edatatype. Probably the id is an
>>> auto-increment long (or something similar), in this case you should
>>> also add the @GeneratedValue annotation to the id edatatype/efeature.
>>>
>>> Note that the above also applies to the version concept. It is better
>>> in general to have an explicit version efeature also in your model.
>>> Although it is not to nice to have such an explicit 'low-level'
>>> concept in the business model it is required when you (de-)serialize
>>> your objects.
>>>
>>> gr. Martin
>>>
>>> Gonzalo wrote:
>>>> Hi Martin!
>>>>
>>>> I've designed my model using EMF, and then generated my
>>>> hibernate.hbm.xml mapping file using Teneo. This is for a web
>>>> application.
>>>> Here is an excerpt:
>>>>
>>>> <!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
>>>> <hibernate-mapping>
>>>>
>>>> <class entity-name="Factura" abstract="false" lazy="false"
>>>> discriminator-value="Factura" table="`factura`">
>>>>
>>>> <meta attribute="eclassName">Factura</meta>
>>>>
>>>> <meta attribute="epackage">http://productoexpediente.factura</meta>
>>>>
>>>> <id type="long" name="e_id" column="e_id"
>>>> access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
>>>>
>>>>
>>>> So Teneo creates an id called "e_id", but I haven't any id in my
>>>> classes.
>>>>
>>>> My question is: Must all my objects extend a class (for example:
>>>> "AbstractObject") with an attribute "id"?
>>>>
>>>> If I execute the method findAll() in the DAO, How can I retrieve the
>>>> attributes of a particular instance returned by findAll()? I suppose
>>>> I need the id of that instance, so how can I get that id to retrieve
>>>> the other attributes?
>>>>
>>>> Thank you again!
>>>>
>>>> With regards,
>>>>
>>>> Gonzalo
>>>>
>>>>
>>>
>>>
>
>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [Teneo] Identifier for my objects [message #88508 is a reply to message #88314] |
Fri, 06 July 2007 17:27 |
Eclipse User |
|
|
|
Originally posted by: FIRSTNAME.LASTNAME.sphere.ae
I changed the instance class name to Long, now it works.
Thanks a lot!
Tom
Martin Taal wrote:
> I forgot to mention that after changing the ecore you have to
> re-generate your java code to get the ecore change into the runtime
> ecore model.
>
> gr. Martin
>
> Martin Taal wrote:
>> How does the ecore for this eDataType look like?
>> Does it have an instance class name set? You can try java.lang.Long or
>> long.
>>
>> gr. Martin
|
|
|
Re: [Teneo] Identifier for my objects [message #607031 is a reply to message #86983] |
Thu, 21 June 2007 10:08 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi Gonzalo,
The synthetic id is automatically added by Teneo to every type which does not have an explicit id
property (i.e. annotated with the @id property). In general it is better/easier to have an explicit
id property.
You can add an id efeature to each eclass to solve this.
Or as you suggest you can create an (abstract) super type which has an id feature. All types will
then inherit from this abstract superclass. As a default Teneo will create a table for this abstract
super class also. If you don't want that then you need to set the @MappedSuperclass annotation in
the abstract supertype.
If you choose to add an id efeature to each type then it can be an idea to define a separate
edatatype for the id. The @id annotation can then be set in this edatatype. Probably the id is an
auto-increment long (or something similar), in this case you should also add the @GeneratedValue
annotation to the id edatatype/efeature.
Note that the above also applies to the version concept. It is better in general to have an explicit
version efeature also in your model. Although it is not to nice to have such an explicit 'low-level'
concept in the business model it is required when you (de-)serialize your objects.
gr. Martin
Gonzalo wrote:
> Hi Martin!
>
> I've designed my model using EMF, and then generated my hibernate.hbm.xml
> mapping file using Teneo. This is for a web application.
> Here is an excerpt:
>
> <!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
> <hibernate-mapping>
>
> <class entity-name="Factura" abstract="false" lazy="false"
> discriminator-value="Factura" table="`factura`">
>
> <meta attribute="eclassName">Factura</meta>
>
> <meta attribute="epackage">http://productoexpediente.factura</meta>
>
> <id type="long" name="e_id" column="e_id"
> access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
>
> So Teneo creates an id called "e_id", but I haven't any id in my classes.
>
> My question is: Must all my objects extend a class (for example:
> "AbstractObject") with an attribute "id"?
>
> If I execute the method findAll() in the DAO, How can I retrieve the
> attributes of a particular instance returned by findAll()? I suppose I need
> the id of that instance, so how can I get that id to retrieve the other
> attributes?
>
> Thank you again!
>
> With regards,
>
> Gonzalo
>
>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
| |
Re: [Teneo] Identifier for my objects [message #608649 is a reply to message #86998] |
Thu, 05 July 2007 14:18 |
Thomas Kuhn Messages: 9 Registered: July 2009 |
Junior Member |
|
|
Hi,
We tried that, but got ...
org.hibernate.id.IdentifierGenerationException: this id generator
generates long, integer, short
.... when saving something.
Our annotation.xml looks like this
[...]
<edatatype name="IdentifierType">
<generated-value />
<id />
</edatatype>
[...]
the generated mapping XML:
[...]
<id name="id" type="to.IdentifierType">
<column not-null="true" unique="true" name="`id`"/>
<generator class="native"/>
</id>
[...]
Hibernate expect to see "long" in the type-attribute... but we're ran
out of ideas how to get from our EDataType to long...
Thanks in advance,
Tom.
Martin Taal wrote:
> Hi Gonzalo,
> The synthetic id is automatically added by Teneo to every type which
> does not have an explicit id property (i.e. annotated with the @id
> property). In general it is better/easier to have an explicit id property.
> You can add an id efeature to each eclass to solve this.
> Or as you suggest you can create an (abstract) super type which has an
> id feature. All types will then inherit from this abstract superclass.
> As a default Teneo will create a table for this abstract super class
> also. If you don't want that then you need to set the @MappedSuperclass
> annotation in the abstract supertype.
>
> If you choose to add an id efeature to each type then it can be an idea
> to define a separate edatatype for the id. The @id annotation can then
> be set in this edatatype. Probably the id is an auto-increment long (or
> something similar), in this case you should also add the @GeneratedValue
> annotation to the id edatatype/efeature.
>
> Note that the above also applies to the version concept. It is better in
> general to have an explicit version efeature also in your model.
> Although it is not to nice to have such an explicit 'low-level' concept
> in the business model it is required when you (de-)serialize your objects.
>
> gr. Martin
>
> Gonzalo wrote:
>> Hi Martin!
>>
>> I've designed my model using EMF, and then generated my
>> hibernate.hbm.xml mapping file using Teneo. This is for a web
>> application.
>> Here is an excerpt:
>>
>> <!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
>> <hibernate-mapping>
>>
>> <class entity-name="Factura" abstract="false" lazy="false"
>> discriminator-value="Factura" table="`factura`">
>>
>> <meta attribute="eclassName">Factura</meta>
>>
>> <meta attribute="epackage">http://productoexpediente.factura</meta>
>>
>> <id type="long" name="e_id" column="e_id"
>> access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
>>
>>
>> So Teneo creates an id called "e_id", but I haven't any id in my classes.
>>
>> My question is: Must all my objects extend a class (for example:
>> "AbstractObject") with an attribute "id"?
>>
>> If I execute the method findAll() in the DAO, How can I retrieve the
>> attributes of a particular instance returned by findAll()? I suppose I
>> need the id of that instance, so how can I get that id to retrieve the
>> other attributes?
>>
>> Thank you again!
>>
>> With regards,
>>
>> Gonzalo
>>
>>
>
>
|
|
|
Re: [Teneo] Identifier for my objects [message #608651 is a reply to message #88268] |
Thu, 05 July 2007 16:58 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
How does the ecore for this eDataType look like?
Does it have an instance class name set? You can try java.lang.Long or long.
gr. Martin
Thomas Kuhn wrote:
> Hi,
>
> We tried that, but got ...
>
> org.hibernate.id.IdentifierGenerationException: this id generator
> generates long, integer, short
>
> .... when saving something.
>
> Our annotation.xml looks like this
>
> [...]
> <edatatype name="IdentifierType">
> <generated-value />
> <id />
> </edatatype>
> [...]
>
> the generated mapping XML:
>
> [...]
> <id name="id" type="to.IdentifierType">
> <column not-null="true" unique="true" name="`id`"/>
> <generator class="native"/>
> </id>
> [...]
>
> Hibernate expect to see "long" in the type-attribute... but we're ran
> out of ideas how to get from our EDataType to long...
>
> Thanks in advance,
>
> Tom.
>
>
>
>
> Martin Taal wrote:
>> Hi Gonzalo,
>> The synthetic id is automatically added by Teneo to every type which
>> does not have an explicit id property (i.e. annotated with the @id
>> property). In general it is better/easier to have an explicit id
>> property.
>> You can add an id efeature to each eclass to solve this.
>> Or as you suggest you can create an (abstract) super type which has an
>> id feature. All types will then inherit from this abstract superclass.
>> As a default Teneo will create a table for this abstract super class
>> also. If you don't want that then you need to set the
>> @MappedSuperclass annotation in the abstract supertype.
>>
>> If you choose to add an id efeature to each type then it can be an
>> idea to define a separate edatatype for the id. The @id annotation can
>> then be set in this edatatype. Probably the id is an auto-increment
>> long (or something similar), in this case you should also add the
>> @GeneratedValue annotation to the id edatatype/efeature.
>>
>> Note that the above also applies to the version concept. It is better
>> in general to have an explicit version efeature also in your model.
>> Although it is not to nice to have such an explicit 'low-level'
>> concept in the business model it is required when you (de-)serialize
>> your objects.
>>
>> gr. Martin
>>
>> Gonzalo wrote:
>>> Hi Martin!
>>>
>>> I've designed my model using EMF, and then generated my
>>> hibernate.hbm.xml mapping file using Teneo. This is for a web
>>> application.
>>> Here is an excerpt:
>>>
>>> <!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
>>> <hibernate-mapping>
>>>
>>> <class entity-name="Factura" abstract="false" lazy="false"
>>> discriminator-value="Factura" table="`factura`">
>>>
>>> <meta attribute="eclassName">Factura</meta>
>>>
>>> <meta attribute="epackage">http://productoexpediente.factura</meta>
>>>
>>> <id type="long" name="e_id" column="e_id"
>>> access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
>>>
>>>
>>> So Teneo creates an id called "e_id", but I haven't any id in my
>>> classes.
>>>
>>> My question is: Must all my objects extend a class (for example:
>>> "AbstractObject") with an attribute "id"?
>>>
>>> If I execute the method findAll() in the DAO, How can I retrieve the
>>> attributes of a particular instance returned by findAll()? I suppose
>>> I need the id of that instance, so how can I get that id to retrieve
>>> the other attributes?
>>>
>>> Thank you again!
>>>
>>> With regards,
>>>
>>> Gonzalo
>>>
>>>
>>
>>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Re: [Teneo] Identifier for my objects [message #608652 is a reply to message #88298] |
Thu, 05 July 2007 16:59 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
I forgot to mention that after changing the ecore you have to re-generate your java code to get the
ecore change into the runtime ecore model.
gr. Martin
Martin Taal wrote:
> How does the ecore for this eDataType look like?
> Does it have an instance class name set? You can try java.lang.Long or
> long.
>
> gr. Martin
>
> Thomas Kuhn wrote:
>> Hi,
>>
>> We tried that, but got ...
>>
>> org.hibernate.id.IdentifierGenerationException: this id generator
>> generates long, integer, short
>>
>> .... when saving something.
>>
>> Our annotation.xml looks like this
>>
>> [...]
>> <edatatype name="IdentifierType">
>> <generated-value />
>> <id />
>> </edatatype>
>> [...]
>>
>> the generated mapping XML:
>>
>> [...]
>> <id name="id" type="to.IdentifierType">
>> <column not-null="true" unique="true" name="`id`"/>
>> <generator class="native"/>
>> </id>
>> [...]
>>
>> Hibernate expect to see "long" in the type-attribute... but we're ran
>> out of ideas how to get from our EDataType to long...
>>
>> Thanks in advance,
>>
>> Tom.
>>
>>
>>
>>
>> Martin Taal wrote:
>>> Hi Gonzalo,
>>> The synthetic id is automatically added by Teneo to every type which
>>> does not have an explicit id property (i.e. annotated with the @id
>>> property). In general it is better/easier to have an explicit id
>>> property.
>>> You can add an id efeature to each eclass to solve this.
>>> Or as you suggest you can create an (abstract) super type which has
>>> an id feature. All types will then inherit from this abstract
>>> superclass. As a default Teneo will create a table for this abstract
>>> super class also. If you don't want that then you need to set the
>>> @MappedSuperclass annotation in the abstract supertype.
>>>
>>> If you choose to add an id efeature to each type then it can be an
>>> idea to define a separate edatatype for the id. The @id annotation
>>> can then be set in this edatatype. Probably the id is an
>>> auto-increment long (or something similar), in this case you should
>>> also add the @GeneratedValue annotation to the id edatatype/efeature.
>>>
>>> Note that the above also applies to the version concept. It is better
>>> in general to have an explicit version efeature also in your model.
>>> Although it is not to nice to have such an explicit 'low-level'
>>> concept in the business model it is required when you (de-)serialize
>>> your objects.
>>>
>>> gr. Martin
>>>
>>> Gonzalo wrote:
>>>> Hi Martin!
>>>>
>>>> I've designed my model using EMF, and then generated my
>>>> hibernate.hbm.xml mapping file using Teneo. This is for a web
>>>> application.
>>>> Here is an excerpt:
>>>>
>>>> <!-- Generated by Teneo on Mon May 07 19:41:00 CEST 2007 -->
>>>> <hibernate-mapping>
>>>>
>>>> <class entity-name="Factura" abstract="false" lazy="false"
>>>> discriminator-value="Factura" table="`factura`">
>>>>
>>>> <meta attribute="eclassName">Factura</meta>
>>>>
>>>> <meta attribute="epackage">http://productoexpediente.factura</meta>
>>>>
>>>> <id type="long" name="e_id" column="e_id"
>>>> access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler ">
>>>>
>>>>
>>>> So Teneo creates an id called "e_id", but I haven't any id in my
>>>> classes.
>>>>
>>>> My question is: Must all my objects extend a class (for example:
>>>> "AbstractObject") with an attribute "id"?
>>>>
>>>> If I execute the method findAll() in the DAO, How can I retrieve the
>>>> attributes of a particular instance returned by findAll()? I suppose
>>>> I need the id of that instance, so how can I get that id to retrieve
>>>> the other attributes?
>>>>
>>>> Thank you again!
>>>>
>>>> With regards,
>>>>
>>>> Gonzalo
>>>>
>>>>
>>>
>>>
>
>
--
With Regards, Martin Taal
Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
| |
Goto Forum:
Current Time: Sat Nov 09 00:11:24 GMT 2024
Powered by FUDForum. Page generated in 0.04716 seconds
|