gpt4 book ai didi

java - JPA 一对一关系

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:05 24 4
gpt4 key购买 nike

我正在使用 Play 框架构建一个项目,但我无法理解 JPA @OneToOne 关系

我目前有两个类(class):


用户对象

@Entity
@Table( name="users" )
public class Users extends Model {

@OneToOne( mappedBy="userId", fetch=FetchType.LAZY, cascade = CascadeType.ALL )
@ForeignKey( name="userId", inverseName="userId" )
UserSettings userSettings;
public userId;
public userName;
}

用户设置

@Entity
@Table( name="user_settings" )
public class UserSettings extends Model {

@OneToOne( cascade = CascadeType.ALL,targetEntity=User.class )
public String userId;
public String xml;

public UserSettings( String userId ){
this.userId = userId;
}
}

我的想法是,我试图将 User 中的 userId 字段设置为 UserSettings 中的外键。我尝试了几种不同的方法来实现这一点,但我的代码总是抛出错误。我收到的最常见错误是:引用的属性不是 (One|Many)ToOne

但是,当我尝试使用上面的代码在 UserSettings 中设置 userId 时,我收到以下异常:

已捕获 javax.persistence.PersistenceException,org.hibernate.PropertyAccessException:无法通过 reader.User.id 的反射 getter 获取字段值

任何人都可以帮助解释我如何才能实现我想要的目标吗?

最佳答案

阅读section 5.2关于实体和值之间差异的 hibernate 引用资料。您正在尝试将 String 映射为实体。正如错误告诉您的那样,只有实体可以是 (One|Many)ToOne。即,您应该使用 User user 而不是 String userId,而不是 mappedBy="userId"mappedBy="用户”

关于java - JPA 一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com