试图用hibernate和java spring创建表

时间:2016-11-21 11:43:51

标签: java spring hibernate spring-mvc

我有一个User班级和一个Recipe班级。 Recipe类有一个字段,显示哪个用户拥有什么食谱。用户有一个id。我认为这应该是ManyToOne连接,因为一个用户可以有很多食谱。我的问题是,我如何在Java spring中编写代码,通过这些注释,我发现自己有点迷失。这是我提出的,但它没有用。

@Entity
public class Recipe {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int recipe_id;
    private String name;
    @JoinColumn(name="user_id" , table="User")
    private int user_id;
    private LocalDate dateUploaded;
    private String description;

    public int getId() {
        return recipe_id;
    }

    public void setId(int recipe_id) {
        this.recipe_id = recipe_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getUser() {
        return user_id;
    }

    public void setUser(int user_id) {
        this.user_id = user_id;
    }

    public LocalDate getDateUploaded() {
        return dateUploaded;
    }

    public void setDateUploaded(LocalDate dateUploaded) {
        this.dateUploaded = dateUploaded;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

用户类

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int user_id;
    private String firstName;
    private String lastName;
    private String userName;
    private String password;

    public User(int user_id, String firstName, String lastName, String userName, String password, int[] favoriteRecipes, int[] myRecipes) {
        this.user_id = user_id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.userName = userName;
        this.password = password;
    }

    public int getId() {
        return user_id;
    }

    public void setId(int user_id) {
        this.user_id = user_id;
    }

    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 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;
    }
}

2 个答案:

答案 0 :(得分:0)

You should add one more field in user table that is getRecieps and add this annotation.  

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "USER_RECEIPE", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "receipe_id") })

   public Set<receipe> getReceipes() {
        return this.receipes;
    }

    public void setreceipes(Set<receipe> receipes) {
        this.receipes= receipes;
    }

答案 1 :(得分:0)

据我所知,您正试图在RecipeUser之间实现ManyToOne关系。

您需要做的就是在

中的user_id字段中添加以下注释

食谱类

@ManyToOne(optional = false)
@JoinColumn(name="user_id")
private int user_id;

试试这个,如果你仍然遇到问题,请告诉我。