当前位置: 首页 > 知识库问答 >
问题:

一对一外键

平俊茂
2023-03-14

我在项目中有一对一外键关系映射的问题。

User.java

@Access(AccessType.FIELD)
@Entity
@Table(name = "users")
public class User {
public Role ro;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int user_id;
@Column(name = "username")
public String username;
@Column(name = "password")
public String password;


@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "username")
public Role getRo() {
    return ro;
}

public void setRo(Role ro) {
    this.ro = ro;
}

@Column(name = "enabled")

public int enabled;


public User() {
}

public int getUser_id() {
    return user_id;
}

public User(String username, String password, int enabled) {
    this.username = username;
    this.password = password;
    this.enabled = enabled;

}


public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public int getEnabled() {
    return enabled;
}

public void setEnabled(int enabled) {
    this.enabled = enabled;
}



@Override
public String toString() {
    return String.format(
            "student[id=%d, name='%s', age='%d']",
            ro.getUsername(), username, ro.getUsername());
}

}

角色Java语言

import javax.persistence.*;

@Access(AccessType.FIELD)
@Entity
@Table(name = "user_roles")
public class Role {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int user_role_id;
@Column(name = "username")
public String username;
@Column(name = "role")
public String role;

public User user;


@OneToOne(mappedBy = "ro")
public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}



public Role(String username, String role) {
    this.username = username;
    this.role = role;
}

public Role() {
}

public int getUser_role_id() {
    return user_role_id;
}



public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getRole() {
    return role;
}

public void setRole(String role) {
    this.role = role;
}



}

这是错误:

导致原因:lass.validateMappingException:无法确定类型:lass.java:265角色,在表:用户,对于列:[inal.jar列(ro)]在org.hibernate.boot.internal.SimpleVmpl.validate类型(SimpleVmpl.java:329)~[hibernate-core-5.0.12。Final.jar:5.0.12。最终]在org.hibernate.mapping.SimpleValue.is有效(SimpleValue.java:398)~[hibernate-core-5.0.12。Final.jar:5.0.12。最终]在Porg.hibernate.mapping.roperty.is有效(Property.java:225)~[hibernate-core-5.0.12。Final.jar:5.0.12。最终]在org.hibernate.mapping.持续lass.validate(持续lass.java:595)~[Hibernate-core-5.0.12。Final.jar:5.0.12。最终]在org.hibernate.mapping.RootCorg.hibernate.(RootCcom.company.project.models.)~[Hibernate-core-5.0.12。Forg.hibernate.mapping.:5.0.12。最终]在org.hibernate.mapping.MetadataIalue.get(MetadataIalue.java:431)~[Hibernate-core-5.0.12。F:5.inal.jar0最后]...省略了22个常见帧

共有1个答案

阎建华
2023-03-14

您应该在变量声明或getter()s上注释所有@Collie/@OneToOne。这就是为什么hibernate在类User中找不到Role

 类似资料:
  • 我有一对一关系的问题-保存后,外键总是被设置为空,即使我有关联的对象。我正在使用Hibernate4.3。7.最终版本为Spring 4.0。0.0版本和MySql 5.6数据库。 在我保存LawFirmProfile对象列后的情况下,参考lawFirm的lawFirm_id始终为空。 实体: 以下是负责保存此记录的代码: Hibernate和Spring配置: 道也是Spring豆,方法注释为@

  • 下面是一对多关系的Hibernate示例 下一个项目java文件 iml代码 在这里,一辆车应该有很多项目,同时运行两个tanles都更新了,但是 第二张桌子 正如您所看到的,这两个表都已更新,但本例中的foreignkey carts\u id没有在owner类中更新,我使用了joincolumn

  • 无法添加或更新子行:外键约束失败(.,约束外键()引用()) 如果我删除,insert操作将会很好地工作。在将对象插入数据库之前,我检查了这些对象,并确保包含,包含。 用于创建和的SQL脚本为: Hibernate:创建表b(b_id integer not null auto_increment,string_results longtext,a_id integer,主键(b_id)) Hib

  • 问题内容: 我有一个表,其中父对象具有可选的多对一关系。问题在于该表已设置为默认将fkey列设置为0。 选择时,使用fetch =“ join”等-fkey的默认值0被用来反复尝试从另一个表中选择ID0。当然这不存在,但是我怎么能告诉Hibernate将0的值与NULL相同- 在获取不存在的关系时不循环20多次以上? 问题答案: 我能够通过创建一个id- long类型来解决此问题,该类型扩展了内置

  • 问题内容: 我正在尝试使我的@OneToMany和@ManyToOne关系正确。 第1类: 第2类: 当我加载或保存新记录时,这种关系似乎运行良好: 但是,当我尝试更新该记录时,它将尝试将IdeaProfileId设置为null: 当我调试时,我可以看到IdeaProfileId确实在音高对象上设置了… 仅供参考,我不是直接更新从数据库加载的原始对象。这些域映射到UI更新的Model类。因此,在保