未知mappedBy in ...引用属性未知错误

时间:2014-02-18 03:55:22

标签: java hibernate

我尝试使用Hibernate创建一对一映射。当我实现DAO方法时,我收到以下错误:

org.hibernate.AnnotationException: Unknown mappedBy in: com.User.userData, referenced property unknown: com.UserData.user
java.lang.NullPointerException

为什么我收到此错误?

我的代码如下:

对于用户实体代码:

@Entity
@Table(name = "user")
public class User implements Serializable {

    @Id
    @GeneratedValue
    @Column(name = "userid")
    int userID;

    @OneToOne(fetch = FetchType.LAZY, mappedBy = "user", cascade = CascadeType.ALL)
    UserData userData;
    ...
}

对于UserData实体代码:

@Entity
@Table(name = "UserData")
public class UserData {

    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "user"))
    int userID;

    @OneToOne(fetch = FetchType.LAZY)   
    @PrimaryKeyJoinColumn
    User user;

1 个答案:

答案 0 :(得分:0)

mappedBy=user更改为mappedBy=userID。那应该可以解决你的问题。

虽然奇怪的是你试图做一对一的双向,但这似乎只需要单向。双向关系意味着您可以从UserDetails对象内部访问您的User对象,反之亦然,但我认为您只需要从User对象内部访问UserDetails对象,而不是相反。

此外,您无需指定FetchType.LAZY,这是默认选项。

如果要将其更改为单向一对一,只需将User类更改为:

@OneToOne
@PrimaryKeyJoinColumn
private UserData userData

并省略UserData类中对User的所有引用。

如果这不能解决您的问题,请告诉我