diff --git a/src/test/java/hibernateTest/entities/Group.java b/src/test/java/hibernateTest/entities/Group.java index 84006d1..83660d1 100644 --- a/src/test/java/hibernateTest/entities/Group.java +++ b/src/test/java/hibernateTest/entities/Group.java @@ -65,6 +65,11 @@ requests.add(request); } + public ArrayList getRequestsList(){ + ArrayList list = new ArrayList(getRequests()); + return list; + } + /*メンバー*/ //public ArrayList getMembersList(){ // return null; @@ -79,8 +84,5 @@ // members.remove(members.indexOf(uid)); // return null; //} - - /*リクエスト*/ - } diff --git a/src/test/java/hibernateTest/entities/Request.java b/src/test/java/hibernateTest/entities/Request.java index 1c84ea4..7c08d47 100644 --- a/src/test/java/hibernateTest/entities/Request.java +++ b/src/test/java/hibernateTest/entities/Request.java @@ -87,7 +87,6 @@ return done; } - public void setDone(boolean done) { this.done = done; } diff --git a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java index b601801..f9b1a72 100644 --- a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java +++ b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java @@ -84,9 +84,9 @@ session.save( new Group("222", "http://test2", "friend", "022" ) ); Group newGroup = new Group("333", "http://test3", "school", "033" ); session.save(newGroup); //インスタンスを引数に渡すこともできます - session.save( new Request("111", "http://test01", "1999.01.01", "011", "cookie", "1999.04.10",011)); - session.save( new Request("222", "http://test02", "1999.02.02", "033", "milk", "1999.04.10",011)); - session.save( new Request("333", "http://test03", "1999.03.03", "033", "ice", "1999.04.10",011)); + session.save( new Request("001", "http://test01", "1999.01.01", "011", "cookie", "1999.04.10",011)); + session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10",011)); + session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10",011)); session.getTransaction().commit(); session.close(); @@ -95,11 +95,11 @@ session = sessionFactory.openSession(); session.beginTransaction(); //load()メソッドを用いて取得する方法。 -// Request deleteRequest = (Request) session.load(Request.class, "222"); -// //データの削除 -// if(deleteRequest != null){ -// session.delete(deleteRequest); -// } + Request deleteRequest = (Request) session.load(Request.class, "002"); + //データの削除 + if(deleteRequest != null){ + session.delete(deleteRequest); + } session.getTransaction().commit(); session.close(); @@ -108,7 +108,7 @@ session.beginTransaction(); //createCriteriaを用いて取得する方法。ただし非推奨。 //http://a4dosanddos.hatenablog.com/entry/2015/03/21/135421 - Criteria criteria = session.createCriteria(Request.class).add(Restrictions.eq("rId", "333")); + Criteria criteria = session.createCriteria(Request.class).add(Restrictions.eq("rId", "003")); Request editRequest = (Request) criteria.uniqueResult(); //データの更新 if(editRequest != null) { @@ -119,13 +119,32 @@ session.close(); /*リレーション*/ + /*リクエストの追加*/ session = sessionFactory.openSession(); session.beginTransaction(); Group editGroup = session.load(Group.class, "111"); if(editGroup != null){ //リクエストはsession.save()をする必要がありません。 - Request aditionalrequest1 = new Request("444", "http://test04", "1999.01.01", "011", "cookie", "1999.04.10",011); - Request aditionalrequest2 = new Request("555", "http://test05", "1999.01.01", "011", "cookie", "1999.04.10",011); + //後のテスト用に4つのリクエストを追加しています。 + Request aditionalrequest1 = new Request("004", "http://test04", "1999.01.01", "011", "Chocolate cookie", "1999.04.10",011); + Request aditionalrequest2 = new Request("005", "http://test05", "1999.01.01", "011", "Banana cookie", "1999.04.10",011); + Request aditionalrequest3 = new Request("006", "http://test06", "1999.01.01", "011", "Milk cookie", "1999.04.10",011); + editGroup.addRequests(aditionalrequest1); + editGroup.addRequests(aditionalrequest2); + editGroup.addRequests(aditionalrequest3); + session.update(editGroup); + } + session.getTransaction().commit(); + session.close(); + + session = sessionFactory.openSession(); + session.beginTransaction(); + editGroup = session.load(Group.class, "222"); + if(editGroup != null){ + //リクエストはsession.save()をする必要がありません。 + //後のテスト用に4つのリクエストを追加しています。 + Request aditionalrequest1 = new Request("007", "http://test07", "1999.01.01", "022", "Green Tee", "1999.04.10",011); + Request aditionalrequest2 = new Request("008", "http://test08", "1999.01.01", "022", "Apple Tee", "1999.04.10",011); editGroup.addRequests(aditionalrequest1); editGroup.addRequests(aditionalrequest2); session.update(editGroup); @@ -133,6 +152,17 @@ session.getTransaction().commit(); session.close(); + /*リレーションを持ったリクエストの削除 (RIDを指定してリクエストを取得し、その後削除)*/ + session = sessionFactory.openSession(); + session.beginTransaction(); + deleteRequest = (Request) session.load(Request.class, "005");//Banana cookie + //データの削除 + if(deleteRequest != null){ + session.delete(deleteRequest); + } + session.getTransaction().commit(); + session.close(); + /*全件取得と出力*/ session = sessionFactory.openSession(); @@ -150,11 +180,13 @@ System.out.println( "Request (" + request.getrId() + ") : " + request.getUri() + ": " + request.getProduct()); } - //リレーションを持たせた分の出力 + /*リレーションを持たせた分の出力*/ + //setは要素の順番に、あまり意味がありません。 Group outGroup = session.load(Group.class, "111"); - List list = new ArrayList(outGroup.getRequests()); + //List list = new ArrayList(outGroup.getRequests()); + List list = outGroup.getRequestsList(); for ( Request request : (List) list ) { - System.out.println( "rId" + request.getrId() + " " + request.getUri() ); + System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct()); } session.getTransaction().commit(); diff --git a/src/test/resources/Group.hbm.xml b/src/test/resources/Group.hbm.xml index 5f94b49..e60150b 100644 --- a/src/test/resources/Group.hbm.xml +++ b/src/test/resources/Group.hbm.xml @@ -23,16 +23,4 @@ - - - - - - - - - - - -