Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用OneTONE注释创建额外列_Java_Hibernate_Jpa - Fatal编程技术网

Java 使用OneTONE注释创建额外列

Java 使用OneTONE注释创建额外列,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个用户对象,需要将组对象与用户对象一起加载 我已经为此编写了以下代码 @实体 @表(name=“User\u info”) 公共类UserDao{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) 私有int用户id; @列(name=“first_name”) 私有字符串名; @列(name=“groupId”) 私有int-groupId; @OneToOne(级联=级联类型.ALL) @PrimaryKeyJoinColumn 私人团长; //

我有一个用户对象,需要将组对象与用户对象一起加载

我已经为此编写了以下代码

@实体
@表(name=“User\u info”)
公共类UserDao{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有int用户id;
@列(name=“first_name”)
私有字符串名;
@列(name=“groupId”)
私有int-groupId;
@OneToOne(级联=级联类型.ALL)
@PrimaryKeyJoinColumn
私人团长;
//二传手和接球手
}
GroupMaster

@实体
@表(name=“group\u master”)
公共类群主{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有int-groupId;
@列(name=“groupName”)
私有字符串组名;
//二传手和接球手
}
这里的
group\u master
是主表,它有
groupId
groupname

我将根据获取
groupMaster
对象所需的值,在
user\u info
表中给出
groupId
。但这里的问题是hibernate正在创建

CREATE TABLE group\u master
(
组id整数不为空,
组名称字符变化(255),
user\u user\u id整数不为空,
约束组\u主\u pkey主键(组\u id),
约束fkjxrn8rglp972s1pqfh5tsb6cu外键(用户id)
参考用户信息(用户id)匹配简单
更新时无操作删除时无操作
)
带(OID=假);
将表组_主所有者更改为XYZ;

我不知道为什么它会创建
user\u-user\u-id
列。我对这个
user\u user\u id
列没有任何用处。该关系应与
groupId
关联。如何修复它。

您不需要单独的groupId列或@PrimaryKeyJoinColumn注释
将您的UserDao更改为:

@实体
@表(name=“User\u info”)
公共类UserDao{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有int用户id;
@列(name=“first_name”)
私有字符串名;
@OneToOne(级联=级联类型.ALL)
私人团长;
//二传手和接球手
}

您应该在两侧定义@OneToOne关系,因此您也需要将@OneToOne注释添加到GroupMaster中,以便以正确的方式进行操作,如下所示:

@Entity
@Table(name = "User_info")
public class UserDao {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int userId;
    @Column(name="first_name")
    private String firstName;

    @OneToOne(mappedBy = "user")
    GroupMaster group;

 //setters and getters
}
 @Entity
    @Table(name = "group_master")
    public class GroupMaster {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int groupId;
        @Column(name="groupName")
        private String groupName;
       
        @OneToOne
        @PrimaryKeyJoinColumn
        UserDao user;

        //Setters and getters
    }
那么GroupMaster实体应该是这样的:

@Entity
@Table(name = "User_info")
public class UserDao {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int userId;
    @Column(name="first_name")
    private String firstName;

    @OneToOne(mappedBy = "user")
    GroupMaster group;

 //setters and getters
}
 @Entity
    @Table(name = "group_master")
    public class GroupMaster {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int groupId;
        @Column(name="groupName")
        private String groupName;
       
        @OneToOne
        @PrimaryKeyJoinColumn
        UserDao user;

        //Setters and getters
    }

不要称你的用户为“UserDao”。刀是不同的东西。将JPA实体视为对业务领域建模的常规类。@EasterBunybugsMasher yeah命名约定缺失,我会更正它,感谢您的建议我得到
错误Null值被分配给Model.UserDao.groupId的基元类型setter的属性[class Model.UserDao.groupId];嵌套的异常是org.hibernate.PropertyAccessException:为Model.UserDao.groupId的基元类型setter的属性[class com.kcs.util.bulkmailer.Model.UserDao.groupId]分配了Null值,但这些值没有到达
groupMaster