Hi all,

Thanks!

I want to declare an id attribute in a persistent class (to be used by JPA).
But the generated attribute has a long name and mysql doesn't accept it.

I completely forgot the @Column annotation! :) I can use @Column(name="id")
to solve the problem.

Thanks again! :)

--db

On Mon, Nov 2, 2009 at 8:53 PM, Andy Clement <[email protected]>wrote:

> > but that adds in a declare statement
>
> Just to say, if you annotate the ITD, that will be on the introduced
> target method - you don't need an additional 'declare @method'.
>
> >From a Roo project:
>    @javax.persistence.Id
>
>  
> @javax.persistence.GeneratedValue(strategy=javax.persistence.GenerationType.AUTO)
>    @javax.persistence.Column(name="id")
>    private java.lang.Long Pet.id;
>
> cheers,
> Andy
>
> 2009/11/2 Dave Whittaker <[email protected]>:
> > Just thought I'd throw in here with a case where I've ran into problems
> with
> > this... JPA.  If you have common fields you want to inject into an entity
> > you might try to do something like
> >
> > private String CommonInterface.commonField
> >
> > And expect at runtime that will result in a db column named common_field,
> or
> > whatever else your naming strategy comes up with.  Sure you could use the
> > @Column annotation and explicitly give it a name, but that adds in a
> declare
> > statement and it is definitely a bit confusing when you first run across
> the
> > issue.  JPA is not the only framework to do this type of reflection these
> > days, Seam's @In injection is another one that tries to determine a value
> > based on the name of the field.
> >
> > Of course i imagine this was done to avoid naming collisions when you
> > receive fields from multiple ITDs and I'm not sure I see a better
> solution.
> >
> > On Nov 2, 2009, at 5:03 PM, Andrew Eisenberg wrote:
> >
> >> Hi,
> >>
> >> The ajc$interField$mypack_mysubpack_MyAspect$id is internal and not
> >> expected to be directly referenced in the source code.  It is only
> >> needed for the byte code (i.e., you should not be concerned with it).
> >> All you need to know is that the declaration declares an Integer field
> >> 'id' on MyClass that is private to the aspect (ie- it is not
> >> accessible anywhere outside the aspect).
> >>
> >> Unless you require knowledge about the byte code, the byte code name
> >> should not be of concern to you.  However, if you do require knowledge
> >> about the byte code, please explain what that is and perhaps we can
> >> help you.
> >>
> >> --a
> >>
> >> On Mon, Nov 2, 2009 at 2:45 PM, db <[email protected]> wrote:
> >>>
> >>> Hi All,
> >>>
> >>> I have an intertype declaration like this:
> >>>
> >>> private Integer MyClass.id;
> >>>
> >>> but, when it was compiled/weaved, this attribute receive the name:
> >>> ajc$interField$mypack_mysubpack_MyAspect$id.
> >>> I want MyClass receive an id attribute and not a ajc$...$id attribute.
> >>> How to do it?
> >>>
> >>> Thanks!
> >>>
> >>> PS: Sorry for my poor English. It isn't my native language :).
> >>>
> >>> _______________________________________________
> >>> aspectj-users mailing list
> >>> [email protected]
> >>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >>>
> >>>
> >> _______________________________________________
> >> aspectj-users mailing list
> >> [email protected]
> >> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >
> > _______________________________________________
> > aspectj-users mailing list
> > [email protected]
> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to