よろしくお願いします。
SpringでJPA以下のようなプログラムを実行したのですが、結果が想定と異なります。ご教授いただけますでしょうか。
テーブル:w_m
x(PK) | a |
---|
テーブルw_n
a(PK) | y |
---|
M.java
@Entity @Table(name = "w_m") public class M implements Serializable{ private static final long serialVersionUID = 1L; public M(){} @Id @Column private String x; @Column private String a; @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(referencedColumnName = "a",name = "a", insertable = false,updatable = false) private N nn; //getter、setter
N,java
@Entity @Table(name = "w_n") public class N implements Serializable{ private static final long serialVersionUID = 1L; public N(){} @Id @Column private String a; @Column //カラム private String y;
ServiceImp.java
@Service public class ServiceImp { //エントリーマネージャーのインジェクション @PersistenceContext EntityManager entityManager; @Transactional public void createM(M m){ entityManager.persist(m); } }
Main.java
public static void main(String[] args) { //コンテキストからバインド @SuppressWarnings("resource") ApplicationContext context = new ClassPathXmlApplicationContext("./spring/application-config.xml"); ServiceImp bhs = context.getBean(ServiceImp.class); //データ登録 M cm = new M(); N cn = new N(); cm.setX("99999"); cm.setA("aaaaa"); cn.setA("aaaaa"); cn.setY("zzzzz"); cm.setNn(cn); //更新処理 bhs.createM(cm); }
結果としては、w_mとw_nに登録されました。
質問
@Many@Oneの際に@JoinColumnに追加しなければエラーとなる(と認識しています)「insertble」と「updateble」は、どういった意味のあるパラメータなのでしょうか。
私はw_mには更新(insert)されるが、w_nには更新されないものと思っていましたが、結果はすべてに更新が行われたことで、「insertable = false,updatable = false」の部分は"何がfalse"となるのか教えて頂けますでしょうか。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/17 09:22
2018/02/18 02:27