[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-3824) OneToOne join by Non-primary key column throws PropertyAccessException when join column is String

Sebastian Bolz (JIRA) noreply at atlassian.com
Tue Feb 2 10:38:29 EST 2010


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-3824?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sebastian Bolz updated HHH-3824:
--------------------------------

    Attachment: hibernate-3.5.0-beta-3-core.patch
                hibernate-3.5.0-beta-3-annotations.patch

Hi,

I have tried to work on a fix on my own and have found a possible solution for the 3.5.0-beta branch. You find attached the two patches for the affected modules (core and annotations).

The fix was tested for JPA annotation mappings and JPA XML mappings. The Hibernate XML mappings does not seem to need a fix, since there we would have to map a one-to-one as a many-to-one with unique=true and that already works fine.

Please let me know, if I can do anything more to speed the process of verification and committing of the fix.

Cheers,
Sebastian


> OneToOne join by Non-primary key column throws PropertyAccessException when join column is String
> -------------------------------------------------------------------------------------------------
>
>                 Key: HHH-3824
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3824
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: query-criteria, query-hql
>    Affects Versions: 3.3.1
>         Environment: Microsoft SQL server 2005, Hibernate 3.3.1
>            Reporter: sathish
>         Attachments: hibernate-3.5.0-beta-3-annotations.patch, hibernate-3.5.0-beta-3-core.patch, trace.txt
>
>
> When i try to join 2 entities by OneToOne using a Non-primary key column,  it throws the following exception:
> org.hibernate.PropertyAccessException: could not get a field value by reflection getter of com.xxx.domain.Inventory.sku
> Caused by: java.lang.IllegalArgumentException: Can not set java.lang.String field com.inwk.estore.server.domain.Inventory.sku to java.lang.Integer
> [Full stacktrace attached]
> sku is the Non-primary key String join column by which im trying to do a OneToOne join between Item and Inventory entity.
> Apparently its trying to interpret Sku as an Integer column. Adding columnDefinition as VARCHAR/String doesn't help either
> Mappings for Item and Inventory are below:
> class Item{
> @Id
> Long id;
> @Column
> String sku;
> //some more properties
> @OneToOne(optional = true)
> @JoinColumn(name = "sku", referencedColumnName = "sku", insertable = false, updatable = false)
> Inventory inventory;
> }
> class Inventory{
> @Id
> Long id
> @Column
> String sku
> @Column
> Long quantity;
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list