Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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 如何正确地构造两个类之间的hibernate关系_Java_Hibernate - Fatal编程技术网

Java 如何正确地构造两个类之间的hibernate关系

Java 如何正确地构造两个类之间的hibernate关系,java,hibernate,Java,Hibernate,我有一个情况,我有一个用户类和一个汽车类。 我的mysql数据库中的表可以如下所示 下面是我如何想象两个实体之间的关系的草图 user user_car car username firstname lastname <----> username car_id <----> car_id cartype tea bruc

我有一个情况,我有一个用户类和一个汽车类。 我的mysql数据库中的表可以如下所示 下面是我如何想象两个实体之间的关系的草图

             user                           user_car                   car
username  firstname  lastname    <---->  username   car_id  <----> car_id   cartype
  tea       bruce      anderson           tea        1             1        ford123
  t         arnold     mena               tea        2             2        audio2
                                          t          2
}

用户类

@Entity
public class userr {

    @Id
    private String username;
    private String firstname;
    private String lastname;

    //Some relation here, which I do not know how to properly set up
    private Set<Car> cars = new HashSet<>();

    public userr(){

    }

    public String getUsername() {
        return username;
    }

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

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public Set<Car> getCars() {
        return cars;
    }

    public void setCars(Set<Car> cars) {
        this.cars = cars;
    }
}
@实体
公共类用户{
@身份证
私有字符串用户名;
私有字符串名;
私有字符串lastname;
//这里有些关系,我不知道如何正确地建立
私家车=新的HashSet();
公共用户(){
}
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
公共字符串getFirstname(){
返回名字;
}
public void setFirstname(字符串firstname){
this.firstname=firstname;
}
公共字符串getLastname(){
返回姓氏;
}
public void setLastname(字符串lastname){
this.lastname=lastname;
}
公共设置getCars(){
返回车辆;
}
公共车辆(固定车辆){
这个。汽车=汽车;
}
}

非常感谢您的帮助。

您应该在连接表中使用多对多映射。在Hibernate文档中查找它。

在实体上使用以下映射

@OneToMany
    @JoinTable(
            name="USER_CAR",
            joinColumns = @JoinColumn( name="username"),
            inverseJoinColumns = @JoinColumn( name="car_id")
    )
private Set<Car> cars = new HashSet<>();    
@OneToMany
@可接合(
name=“USER\u CAR”,
joinColumns=@JoinColumn(name=“username”),
inverseJoinColumns=@JoinColumn(name=“car\u id”)
)
私家车=新的HashSet();

看起来我修复了它,在jointable中创建了第三列,它自动递增并充当主键。然而,现在它插入所有内容超过两次。如果有人知道一个简单的修复方法,我很乐意听到。

我尝试了上述方法,并添加了一辆id为1的汽车,它成功地进入了我的数据库。就在我尝试将另一辆id为3的车发送给同一用户之后。但是我仍然得到重复的条目'tea-1'作为键'PRIMARY'我的hibernate是否尝试插入双行?因为当我试着插入一辆有身份证的车时,说dublicate键1似乎很奇怪3@JonCode用你的实际代码更新帖子以获得更好的答案。如果我使用Jay和@ManyToMany的代码,我在尝试插入另一辆车时仍然会出现重复错误。
@OneToMany
    @JoinTable(
            name="USER_CAR",
            joinColumns = @JoinColumn( name="username"),
            inverseJoinColumns = @JoinColumn( name="car_id")
    )
private Set<Car> cars = new HashSet<>();