Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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 休眠在@JoinTable上创建关系_Java_Hibernate_Jakarta Ee_Jpa_Hibernate Mapping - Fatal编程技术网

Java 休眠在@JoinTable上创建关系

Java 休眠在@JoinTable上创建关系,java,hibernate,jakarta-ee,jpa,hibernate-mapping,Java,Hibernate,Jakarta Ee,Jpa,Hibernate Mapping,我有两个具有多对多关系的表,它们具有可连接的用户服务,如下所示 @Entity public class User implements Serializable { @NotNull @Column(unique=true) private String username; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private

我有两个具有多对多关系的表,它们具有可连接的用户服务,如下所示

@Entity
public class User implements Serializable {

    @NotNull
    @Column(unique=true)
    private String username;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(
            name = "USER_SERVICES",
            joinColumns = {@JoinColumn(name = "id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "", referencedColumnName = "name")})
    private Set<Services> services;

    // Getters and Setters
}   


@Entity
public class Services implements Serializable {

    @NotNull
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    private Long serviceId;

    @NotNull
    @Column(unique=true)
    private String name;

    //Getters and Setters

}
@实体
公共类用户实现可序列化{
@NotNull
@列(唯一=真)
私有字符串用户名;
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“id”)
私人长id;
@ManyToMany(fetch=FetchType.EAGER)
@可接合(
name=“用户服务”,
joinColumns={@JoinColumn(name=“id”,referencedColumnName=“id”)},
inverseJoinColumns={@JoinColumn(name=,referencedColumnName=“name”)}
专用集服务;
//接球手和接球手
}   
@实体
公共类服务实现可序列化{
@NotNull
@GeneratedValue(策略=GenerationType.AUTO)
@身份证
私人长期服务ID;
@NotNull
@列(唯一=真)
私有字符串名称;
//接球手和接球手
}

上面的代码创建了一个表USER\u SERVICES,但我还希望表USER\u SERVICES与另一个表RATINGS之间有一个多对多关系,这将导致另一个表USER\u SERVICES\u RATINGS。如何使用Hibernate/JPA注释定义此关系?

您需要创建一个显式的
UserServices
实体,并根据需要设置与
评级
实体的关系


请记住,在hibernate中,您可以建模实体(即java对象)之间的关系,而不是db表。

您需要创建一个显式的
UserServices
实体,并根据需要设置与
评级
实体的关系


请记住,在hibernate中,您可以建模实体(即java对象)之间的关系,而不是db表。

您需要创建一个显式的
UserServices
实体,并根据需要设置与
评级
实体的关系


请记住,在hibernate中,您可以建模实体(即java对象)之间的关系,而不是db表。

您需要创建一个显式的
UserServices
实体,并根据需要设置与
评级
实体的关系


请记住,在hibernate中,您对实体(即java对象)之间的关系进行建模,而不是db表。

使用用户管理的联接表对象(相对常见)进行双向多对多建模。

当您希望在联接对象上存储额外信息(如创建关系的日期)时通常使用

public class Foo{
    private UUID fooId;

    @OneToMany(mappedBy = "bar", cascade=CascadeType.ALL)
    private List<FooBar> bars;
}

public class Bar{
    private UUID barId;

    @OneToMany(mappedBy = "foo", cascade=CascadeType.ALL)
    private List<FooBar> foos;
}

@Entity
@Table(name="FOO_BAR")
public class FooBar{
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId")
    private Bar bar;

    //You can store other objects/fields on this table here.
}
公共类Foo{
私有UUID-fooId;
@OneToMany(mappedBy=“bar”,cascade=CascadeType.ALL)
私人酒吧名单;
}
公共类酒吧{
私人UUID barId;
@OneToMany(mappedBy=“foo”,cascade=CascadeType.ALL)
私人名单;
}
@实体
@表(name=“FOO\u BAR”)
公共级FooBar{
私人UUID fooBarId;
@许多酮
@JoinColumn(name=“fooId”)
私人富福;
@许多酮
@JoinColumn(name=“barId”)
私人酒吧;
//您可以在此表上存储其他对象/字段。
}

使用用户管理的联接表对象的双向多对多(相对常见)

当您希望在联接对象上存储额外信息(如创建关系的日期)时通常使用

public class Foo{
    private UUID fooId;

    @OneToMany(mappedBy = "bar", cascade=CascadeType.ALL)
    private List<FooBar> bars;
}

public class Bar{
    private UUID barId;

    @OneToMany(mappedBy = "foo", cascade=CascadeType.ALL)
    private List<FooBar> foos;
}

@Entity
@Table(name="FOO_BAR")
public class FooBar{
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId")
    private Bar bar;

    //You can store other objects/fields on this table here.
}
公共类Foo{
私有UUID-fooId;
@OneToMany(mappedBy=“bar”,cascade=CascadeType.ALL)
私人酒吧名单;
}
公共类酒吧{
私人UUID barId;
@OneToMany(mappedBy=“foo”,cascade=CascadeType.ALL)
私人名单;
}
@实体
@表(name=“FOO\u BAR”)
公共级FooBar{
私人UUID fooBarId;
@许多酮
@JoinColumn(name=“fooId”)
私人富福;
@许多酮
@JoinColumn(name=“barId”)
私人酒吧;
//您可以在此表上存储其他对象/字段。
}

使用用户管理的联接表对象的双向多对多(相对常见)

当您希望在联接对象上存储额外信息(如创建关系的日期)时通常使用

public class Foo{
    private UUID fooId;

    @OneToMany(mappedBy = "bar", cascade=CascadeType.ALL)
    private List<FooBar> bars;
}

public class Bar{
    private UUID barId;

    @OneToMany(mappedBy = "foo", cascade=CascadeType.ALL)
    private List<FooBar> foos;
}

@Entity
@Table(name="FOO_BAR")
public class FooBar{
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId")
    private Bar bar;

    //You can store other objects/fields on this table here.
}
公共类Foo{
私有UUID-fooId;
@OneToMany(mappedBy=“bar”,cascade=CascadeType.ALL)
私人酒吧名单;
}
公共类酒吧{
私人UUID barId;
@OneToMany(mappedBy=“foo”,cascade=CascadeType.ALL)
私人名单;
}
@实体
@表(name=“FOO\u BAR”)
公共级FooBar{
私人UUID fooBarId;
@许多酮
@JoinColumn(name=“fooId”)
私人富福;
@许多酮
@JoinColumn(name=“barId”)
私人酒吧;
//您可以在此表上存储其他对象/字段。
}

使用用户管理的联接表对象的双向多对多(相对常见)

当您希望在联接对象上存储额外信息(如创建关系的日期)时通常使用

public class Foo{
    private UUID fooId;

    @OneToMany(mappedBy = "bar", cascade=CascadeType.ALL)
    private List<FooBar> bars;
}

public class Bar{
    private UUID barId;

    @OneToMany(mappedBy = "foo", cascade=CascadeType.ALL)
    private List<FooBar> foos;
}

@Entity
@Table(name="FOO_BAR")
public class FooBar{
    private UUID fooBarId;

    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;

    @ManyToOne
    @JoinColumn(name = "barId")
    private Bar bar;

    //You can store other objects/fields on this table here.
}
公共类Foo{
私有UUID-fooId;
@OneToMany(mappedBy=“bar”,cascade=CascadeType.ALL)
私人酒吧名单;
}
公共类酒吧{
私人UUID barId;
@OneToMany(mappedBy=“foo”,cascade=CascadeType.ALL)
私人名单;
}
@实体
@表(name=“FOO\u BAR”)
公共级FooBar{
私人UUID fooBarId;
@许多酮
@JoinColumn(name=“fooId”)
私人富福;
@许多酮
@JoinColumn(name=“barId”)
私人酒吧;
//您可以在此表上存储其他对象/字段。
}

您可以在Hibernate映射和注释中找到有用的注释。谢谢@JamesMassey,根据您的教程,我能够解决我的问题。如果您还可以为许多人在CascadeType上添加更多的代码,那就太好了。如果您可以在此处复制粘贴教程中的代码,我将接受您的答案。如果您觉得有帮助,请不要忘记升级投票:Pyou可能会发现Hibernate映射和注释很有帮助。谢谢@JamesMassey,根据您的教程,我能够解决我的问题。如果您还可以为许多人在CascadeType上添加更多的代码,那就太好了。如果可以的话