Jpa 找不到OneTONE的列[id]?
在我的迁移中,Jpa 找不到OneTONE的列[id]?,jpa,model-view-controller,playframework,playframework-2.0,Jpa,Model View Controller,Playframework,Playframework 2.0,在我的迁移中,users表包含一个bigint类型的info\u id列,infos表包含一个bigint类型的user\u id列 但是,当我运行该应用程序时,它会给我[models.Info.user]上的连接带来PersistenceException:Error。在表[users]中找不到[id]的匹配外键?也许使用@JoinColumn时名称/referencedColumnName属性已交换? 有人能提供一些关于我的代码中的错误以及如何修复它的见解吗?谢谢。试试这个 用户模型 @En
users
表包含一个bigint类型的info\u id
列,infos
表包含一个bigint类型的user\u id
列
但是,当我运行该应用程序时,它会给我[models.Info.user]上的连接带来PersistenceException:Error。在表[users]中找不到[id]的匹配外键?也许使用@JoinColumn时名称/referencedColumnName属性已交换?
有人能提供一些关于我的代码中的错误以及如何修复它的见解吗?谢谢。试试这个
用户模型
@Entity
@Table(name = "users")
public class User extends Model
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public Long id;
@OneToOne(mappedBy= "user", cascade = {CascadeType.ALL})
@JoinColumn(name="info_id",referencedColumnName = "id")
public Info info;
}
@Entity
@Table(name="infos")
public class Info extends Model
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public Long id;
@OneToOne(mappedBy="info",cascade = {CascadeType.ALL})
@JoinColumn(name="user_id", referencedColumnName = "id")
public User user;
}
@OneToOne
@JoinColumn(name="info_id")
public Info info;
信息模型
@Entity
@Table(name = "users")
public class User extends Model
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public Long id;
@OneToOne(mappedBy= "user", cascade = {CascadeType.ALL})
@JoinColumn(name="info_id",referencedColumnName = "id")
public Info info;
}
@Entity
@Table(name="infos")
public class Info extends Model
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public Long id;
@OneToOne(mappedBy="info",cascade = {CascadeType.ALL})
@JoinColumn(name="user_id", referencedColumnName = "id")
public User user;
}
@OneToOne
@JoinColumn(name="info_id")
public Info info;
您不应该将
mappedBy
与JoinColumn
一起使用。查看差异。您能发布这两个表的模式吗?删除两个实体中的mappedBy否不要删除两个实体中的mappedBy;将其从一侧拆下。它用于将关系标记为双向关系,并且仅放在非所有者侧。