ManyToOne

チュートリアルの続きで、ManyToOneをやってみたのでメモ。やり方は、Many側クラスのgetterに@ManyToOneをつけるだけです。

例えばRecipeとCategoryだとN:1になるので、RecipeのgetCategory()に@ManyToOneを付けます。Recipe.javaはこんな感じです。

package mysample;

import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Recipe
{
    private Integer id;
    private String title;
    private String description;
    private Date date;
    private Category category;
    
    @ManyToOne()
    public Category getCategory(){
        return category;
    }
    public void setCategory(Category category){
        this.category = category;
    }

    ・・・以下、略
}

そして、Category.javaは、こんな感じです。別にどうということはありません。

package mysample;

import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
import org.apache.commons.lang.builder.EqualsBuilder;

@Entity
public class Category {
    private Integer id;
    private String name;
 
    @Id(generate=GeneratorType.AUTO)
    public Integer getId() {
        return id;
    }
    public void setId(Integer id){
        this.id = id;
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }  
    public boolean equals(Object obj){
        return EqualsBuilder.reflectionEquals(this, obj);
    }
    public String toString(){
       return getName();
    }
}

できたら、redeployタスクで再デプロイします。

ant redeploy

アプリを確認すると、Recipeの登録画面にCategoryを選択できるコンボボックスが追加されているはずです。