Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 使用注释休眠一对多映射-在列表中获得相同的值_Java_Hibernate - Fatal编程技术网

Java 使用注释休眠一对多映射-在列表中获得相同的值

Java 使用注释休眠一对多映射-在列表中获得相同的值,java,hibernate,Java,Hibernate,我正在将用户表链接到应用程序访问。在这里,一个用户可以访问多个应用程序。 我已经用下面的代码成功地完成了映射 用户实体对象: @Entity @Table(name = "USER_TBL", uniqueConstraints = { @UniqueConstraint(columnNames = "USER_NAME") }) public class User implements Serializable { ..... @Id @GeneratedValue

我正在将用户表链接到应用程序访问。在这里,一个用户可以访问多个应用程序。 我已经用下面的代码成功地完成了映射

用户实体对象:

@Entity
@Table(name = "USER_TBL", uniqueConstraints = { @UniqueConstraint(columnNames = "USER_NAME") })
public class User implements Serializable {

.....
        @Id
    @GeneratedValue
    @Column(name = "USER_ID", unique = true, nullable = false)
    private Integer userId;


    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private List<UserAppAssociation> userAssociatedApplications = new ArrayList<UserAppAssociation>();

    Getter and setter for userAssociatedApplications

}
问题:

I am getting the same values in the Application List ('userAssociatedApplications'). Though i have different values in the application access table, I get the same values in the list. The first row value is repeated in the list.
DB:

用户表:用户 柱 用户id名称电话

应用程序访问表:应用程序\u关联\u TBL

纵队 用户id应用程序id和用户类型

注意-此表中没有主键

样本数据: 用户\u id应用程序\u id用户\u类型 1 1 1 1 2 1 1 3 1

问题:我三次得到列表中的第一个值1,1,1。 预期:列表应具有3个不同的值


请帮忙。我不确定注释映射中是否缺少任何内容。

这似乎有问题

@Id
@Column(name="user_id", unique=true, nullable=false)
private Integer userId;

@ManyToOne
@JoinColumn(name="USER_ID",insertable=false,updatable=false)
private User user;
尝试使用此映射。请将此作为名称指南,不要使用不必要的注释

@Entity
@Table(name = "xxx_users", uniqueConstraints = { @UniqueConstraint(columnNames = "f_name") })
public class User {

    @Id
    @GeneratedValue
    @Column(name = "f_id")
    private Integer id;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private List<UserAppAssociation> applications = new ArrayList<UserAppAssociation>();

}


@Entity
@Table(name="xxx_user_applications")
public class UserAppAssociation {

    @Id
    @GeneratedValue
    @Column(name = "f_id")
    private Integer id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="fk_user")
    private User user;

}
@实体
@表(name=“xxx_用户”,uniqueConstraints={@UniqueConstraint(columnNames=“f_name”)})
公共类用户{
@身份证
@生成值
@列(name=“f_id”)
私有整数id;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“user”)
私有列表应用程序=新的ArrayList();
}
@实体
@表(name=“xxx\u用户\u应用程序”)
公共类用户关联{
@身份证
@生成值
@列(name=“f_id”)
私有整数id;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“fk_user”)
私人用户;
}

user和application表中有哪些数据?@DeendayalGarg-正如我所提到的,在user-TBL中,我有user-id、name、phone-As列,其中包含1、saranya、2323等数据。在APPLICATION\u ASSOC\u TBL中,我有3列User\u id APPLICATION\u id和User\u type,共2行1、1、1和1、2、1感谢您的回复@manytone(fetch=FetchType.LAZY)@JoinColumn(name=“fk_user”)私有用户;我按照您的注释进行了尝试,但没有成功。这里的列名“fk_user”是什么。我尝试使用user_id作为联接列name@Saranya这不是问题!您不应该在
UserAppAssociation
中使用
Integer userId
。只需删除所有字段和
uniqueConstraints
,除了我示例中的那些,然后进行测试。您可以使用
user\u id
代替
fk\u user
,当然,它只是一个列。但不要为同一行添加两列(
user\u id
user\u id
)@Saranya尝试重新创建db架构并填充数据,因为您需要为
UserAppAssociation
生成ID。让我尝试重新创建架构并检查。但与此同时,您的意思是我应该为应用程序ASSOC TBL表提供一个主键吗?目前我没有此表的任何主键
@Id
@Column(name="user_id", unique=true, nullable=false)
private Integer userId;

@ManyToOne
@JoinColumn(name="USER_ID",insertable=false,updatable=false)
private User user;
@Entity
@Table(name = "xxx_users", uniqueConstraints = { @UniqueConstraint(columnNames = "f_name") })
public class User {

    @Id
    @GeneratedValue
    @Column(name = "f_id")
    private Integer id;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private List<UserAppAssociation> applications = new ArrayList<UserAppAssociation>();

}


@Entity
@Table(name="xxx_user_applications")
public class UserAppAssociation {

    @Id
    @GeneratedValue
    @Column(name = "f_id")
    private Integer id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="fk_user")
    private User user;

}