Hibernate: inconsistent results with @OneToOne unidirectional relationships

I get inconsistent results with @OneToOne unidirectional relationships in Hibernate. In particular, I have a table Userwith two relationships to other tables: Fooand Bar.

Foomaps to a Usercustom property uuid(string). Barmaps to a Usercustom property id(integer).

My objects look something like this:

@Entity
@Table(name = "User")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Integer id;

    @Column(name = "uuid")
    private String uuid;

    @OneToOne
    @JoinColumn(name = "uuid", referencedColumnName = "frn_object_uuid")
    private Foo foo;

    @OneToOne
    @JoinColumn(name = "id", referencedColumnName = "frn_user_id")
    private Bar bar;

    // getters and setters
}

@Entity
@Table(name = "Foo")
public class Foo {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Integer id;

    @Column(name = "frn_object_uuid")
    private String objectUuid;

    @Column(name = "foo")
    private String foo;

    // getters and setters
}

@Entity
@Table(name = "Bar")
public class Bar {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Integer id;

    @Column(name = "frn_user_id")
    private Integer userId;

    @Column(name = "bar")
    private String bar;

    // getters and setters
}

When I read an object User, I get results for Foo, but NULL for Bar.

What am I missing here? I can get results if I do a Barbi-directional relation using mappedBy... very strange.

Thanks in advance!

+3

All Articles