So consider the following 2 tables:
table: User
id (pk)
...
and table UserProfile:
UserProfile
user_id(pk, and fk from User.id. fk is named profile_user_fk)
...
given this tables, I have the entity classes:
@Entity
@Table(name="User")
public class User implements Serializable {
    private int id;
    private UserProfile profile;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false, unique = true)
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    @OneToOne(mappedBy = "user")
    public UserProfile getProfie() {
        return profile;
    }
    public void setProfile(UserProfile  p) {
        profile = p;
    }
...
}
And the User class:
@Entity
@Table(name="UserProfile")
public class UserProfile implements Serializable {
    private User user;
    @OneToOne
    @PrimaryKeyJoinColumn(name="profile_user_fk")
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
...
}
I don't want to add an extra column in UserProfile because I think this column is meaningless. User.id should be sufficient to indicate the identity of UserProfile records.
So I supposed the @OneToOne annotations will tell hibernate user is a pk and also fk and should refer to User.id for its own id; however executing the code shows:
org.hibernate.AnnotationException: No identifier specified for entity: xxx.UserProfile
Apparently what I thought was wrong - but I've no idea what can I do to fix it without altering the schema.
Any helps please. Thanks!
 
     
    