diff --git a/src/main/java/com/example/cosmos_serversb/CosmosServerSbApplication.java b/src/main/java/com/example/cosmos_serversb/CosmosServerSbApplication.java index aaa3e30..3a68a6c 100644 --- a/src/main/java/com/example/cosmos_serversb/CosmosServerSbApplication.java +++ b/src/main/java/com/example/cosmos_serversb/CosmosServerSbApplication.java @@ -4,7 +4,9 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class CosmosServerSbApplication { +public class + +CosmosServerSbApplication { public static void main(String[] args) { SpringApplication.run(CosmosServerSbApplication.class, args); diff --git a/src/main/java/com/example/cosmos_serversb/entities/Group.java b/src/main/java/com/example/cosmos_serversb/entities/Group.java index a29e9a1..f600d03 100644 --- a/src/main/java/com/example/cosmos_serversb/entities/Group.java +++ b/src/main/java/com/example/cosmos_serversb/entities/Group.java @@ -7,7 +7,7 @@ public class Group { private String gId; private String uri, name; - private ArrayList members; + private Set members; //private ArrayList requests; private Set requests; @@ -64,14 +64,21 @@ public void addRequests(Request request){ requests.add(request); } -/* + + /* public ArrayList getRequestsList(){ ArrayList list = new ArrayList(getRequests()); return list; } + */ - */ + public void setMembers(Set members) { + this.members = members; + } + public Set getMembers() { + return members; + } /*メンバー*/ //public ArrayList getMembersList(){ diff --git a/src/main/resources/Group.hbm.xml b/src/main/resources/Group.hbm.xml index d5733ed..cc94468 100644 --- a/src/main/resources/Group.hbm.xml +++ b/src/main/resources/Group.hbm.xml @@ -21,6 +21,19 @@ + + + + + diff --git a/src/test/java/hibernateTest/entities/Belong.java b/src/test/java/hibernateTest/entities/Belong.java index 031df94..5ae36c4 100644 --- a/src/test/java/hibernateTest/entities/Belong.java +++ b/src/test/java/hibernateTest/entities/Belong.java @@ -28,4 +28,13 @@ return gId; } + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } + +// @Override +// public int hashCode() { +// return super.hashCode(); +// } } diff --git a/src/test/java/hibernateTest/entities/Group.java b/src/test/java/hibernateTest/entities/Group.java index c083306..4735c93 100644 --- a/src/test/java/hibernateTest/entities/Group.java +++ b/src/test/java/hibernateTest/entities/Group.java @@ -1,14 +1,18 @@ //このクラスは仮です package hibernateTest.entities; +import hibernateTest.models.Groups; +import hibernateTest.models.Users; + import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; public class Group { private String gId; private String uri, name; - //private ArrayList members; + private Set members = new HashSet<>();//HashSetでいいのかな? //private ArrayList requests; private Set requests; @@ -20,6 +24,7 @@ setgId(gId); setUri(uri); setName(name); + addMember(uId); } public String getgId(){ @@ -66,9 +71,24 @@ requests.add(request); } - public ArrayList getRequestsList(){ - ArrayList list = new ArrayList(getRequests()); - return list; +// public ArrayList getRequestsList(){ +// ArrayList list = new ArrayList(getRequests()); +// return list; +// } + + public void setMembers(Set members) { + this.members = members; + } + + public Set getMembers() { + return members; + } + + public void addMember(String uId){ + //test用 + User user = new User(uId, uId, "http:test", "sa", "hogehoge"); + //User user = Users.getInstance().getUserById(uId); + members.add(user); } diff --git a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java index 4914d2e..538318f 100644 --- a/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java +++ b/src/test/java/hibernateTest/models/NativeApiIllustrationTest.java @@ -28,10 +28,12 @@ import java.util.List; import java.util.Set; +import com.example.cosmos_serversb.resources.UsersRest; import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable; import hibernateTest.entities.Event; import hibernateTest.entities.Group; import hibernateTest.entities.Request; +import hibernateTest.entities.User; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.hibernate.Session; @@ -84,11 +86,12 @@ session.save( new Event( "A follow up event", new Date() ) ); session.save( new Group("111", "http://test1", "family", "011" ) ); session.save( new Group("222", "http://test2", "friend", "022" ) ); - Group newGroup = new Group("333", "http://test3", "school", "033" ); + Group newGroup = new Group("333", "http://test3", "school", "033" );//インスタンスを引数に渡すこともできます session.save(newGroup); //インスタンスを引数に渡すこともできます + session.save( new Group("444", "http://test4", "Laboratory", "044" ) );//userの追加を行う session.save( new Request("001", "http://test01", "1999.01.01", "011", "cookie", "1999.04.10", location)); - session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10", location)); - session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10", location)); + session.save( new Request("002", "http://test02", "1999.02.02", "033", "milk", "1999.04.10", location));//後にリクエストを削除 + session.save( new Request("003", "http://test03", "1999.03.03", "033", "ice", "1999.04.10", location));//後にチョコレートアイスに変更 session.getTransaction().commit(); session.close(); @@ -140,12 +143,12 @@ if(editGroup != null){ //リクエストはsession.save()で保存する必要がありません。 //後のテスト用に3つのリクエストを追加しています。 - Request additionalrequest1 = new Request("004", "http://test04", "1999.01.01", "011", "Chocolate cookie", "1999.04.10", location); - Request additionalrequest2 = new Request("005", "http://test05", "1999.01.01", "011", "Banana cookie", "1999.04.10", location); - Request additionalrequest3 = new Request("006", "http://test06", "1999.01.01", "011", "Milk cookie", "1999.04.10", location); - editGroup.addRequests(additionalrequest1); - editGroup.addRequests(additionalrequest2); - editGroup.addRequests(additionalrequest3); + Request aditionalrequest1 = new Request("004", "http://test04", "1999.01.01", "011", "Chocolate cookie", "1999.04.10", location); + Request aditionalrequest2 = new Request("005", "http://test05", "1999.01.01", "011", "Banana cookie", "1999.04.10", location); + Request aditionalrequest3 = new Request("006", "http://test06", "1999.01.01", "011", "Milk cookie", "1999.04.10", location); + editGroup.addRequests(aditionalrequest1); + editGroup.addRequests(aditionalrequest2); + editGroup.addRequests(aditionalrequest3); session.update(editGroup); } session.getTransaction().commit(); @@ -156,32 +159,15 @@ editGroup = session.load(Group.class, "222"); if(editGroup != null){ //リクエストはsession.save()で保存する必要がありません。 - Request additionalrequest1 = new Request("007", "http://test07", "1999.01.01", "022", "Green Tee", "1999.04.10", location); - Request additionalrequest2 = new Request("008", "http://test08", "1999.01.01", "022", "Apple Tee", "1999.04.10", location); - editGroup.addRequests(additionalrequest1); - editGroup.addRequests(additionalrequest2); + Request aditionalrequest1 = new Request("007", "http://test07", "1999.01.01", "022", "Green Tee", "1999.04.10", location); + Request aditionalrequest2 = new Request("008", "http://test08", "1999.01.01", "022", "Apple Tee", "1999.04.10", location); + editGroup.addRequests(aditionalrequest1); + editGroup.addRequests(aditionalrequest2); session.update(editGroup); } session.getTransaction().commit(); session.close(); - session = sessionFactory.openSession(); - session.beginTransaction(); - editGroup = session.load(Group.class, "333"); - if(editGroup != null){ - //リクエストはsession.save()で保存する必要がありません。 - Request additionalrequest1 = new Request("009", "http://test09", "1999.01.01", "033", "Hamburger", "1999.04.10", location); - Request additionalrequest2 = new Request("010", "http://test10", "1999.01.01", "033", "Potato", "1999.04.10", location); - Request additionalrequest3 = new Request("011", "http://test11", "1999.01.01", "033", "Smile", "1999.04.10", location); - editGroup.addRequests(additionalrequest1); - editGroup.addRequests(additionalrequest2); - editGroup.addRequests(additionalrequest3); - session.update(editGroup); - } - session.getTransaction().commit(); - session.close(); - - /*リレーションを持ったリクエストの削除 (RIDを指定してリクエストを取得し、その後削除)*/ session = sessionFactory.openSession(); session.beginTransaction(); @@ -193,6 +179,33 @@ session.getTransaction().commit(); session.close(); + + /*中間テーブル(USER-GROUP)*/ + /*ユーザの追加*/ + session = sessionFactory.openSession(); + session.beginTransaction(); + editGroup = session.load(Group.class, "444"); + if(editGroup != null){ + editGroup.addMember("055"); + editGroup.addMember("066");//後で削除します。 + editGroup.addMember("077"); + + } + session.getTransaction().commit(); + session.close(); + + /*ユーザの削除*/ + session = sessionFactory.openSession(); + session.beginTransaction(); + User deleteUser = session.load(User.class, "066");//参照整合性制約でエラー + if(deleteUser != null){ + session.delete(deleteUser); + } + session.getTransaction().commit(); + session.close(); + + + /*出力*/ /*全件取得と出力*/ session = sessionFactory.openSession(); session.beginTransaction(); @@ -202,51 +215,48 @@ for ( Event event : (List) result ) { System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); } + List groupResult = session.createQuery( "from Group" ).list(); System.out.println("グループテーブル"); for ( Group group : (List) groupResult ) { - System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName()); + Set members = group.getMembers(); + System.out.println( "Group (" + group.getgId() + ") : " + group.getUri() + ": " + group.getName() + " member: "); + for( User user : (Set) members){ + System.out.println(user.getuId() + " "); + } + System.out.println(); + } + + List requestResult = session.createQuery( "from Request" ).list(); + System.out.println("リクエストテーブル"); + for ( Request request : (List) requestResult ) { + System.out.println( "Request (" + request.getrId() + ") : " + request.getUri() + ": " + request.getProduct()); + } + + List userResult = session.createQuery( "from User" ).list(); + System.out.println("ユーザテーブル"); + for ( User user : (List) userResult ) { + System.out.println( "User (" + user.getuId() + ") : " + user.getUri()); } /*リレーションを持たせた分の出力*/ //Setは要素の順番に意味がないため、出力の順番はrId順ではありません。 Group outGroup = session.load(Group.class, "111"); - List list = outGroup.getRequestsList();//Listとして取り出す。 + Set set = outGroup.getRequests();//Listとして取り出す。 System.out.println("グループID111のリクエスト一覧"); - for ( Request request : (List) list ) { + for ( Request request : (Set) set ) { System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct()); } outGroup = session.load(Group.class, "222"); - Set set = outGroup.getRequests();//Setのまま取り出す。 + set = outGroup.getRequests();//Setのまま取り出す。 System.out.println("グループID222のリクエスト一覧"); for ( Request request : (Set) set ) { System.out.println( "rId: " + request.getrId() + " " + request.getUri() + " " + request.getProduct()); } + session.getTransaction().commit(); session.close(); - - /*リクエストを持ったグループの削除*/ - session = sessionFactory.openSession(); - session.beginTransaction(); - //load()メソッドを用いて取得する方法。 - Group deleteGroup = (Group) session.load(Group.class, "333"); - //データの削除 - if(deleteGroup != null){ - session.delete(deleteGroup); - } - session.getTransaction().commit(); - session.close(); - - session = sessionFactory.openSession(); - session.beginTransaction(); - List requestResult = session.createQuery( "from Request" ).list(); - System.out.println("グループ(ID:333)を削除後のリクエストテーブル"); - for ( Request request : (List) requestResult ) { - System.out.println( "Request (" + request.getrId() + ") : " + request.getUri() + ": " + request.getProduct()); - } - System.out.println("ハンバーガー,ポテト,スマイルも消えています"); - session.getTransaction().commit(); - session.close(); - } + + } diff --git a/src/test/resources/Belong.hbm.xml b/src/test/resources/Belong.hbm.xml deleted file mode 100644 index 7f025ca..0000000 --- a/src/test/resources/Belong.hbm.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/test/resources/Group.hbm.xml b/src/test/resources/Group.hbm.xml index 59aa944..00e2bda 100644 --- a/src/test/resources/Group.hbm.xml +++ b/src/test/resources/Group.hbm.xml @@ -21,6 +21,17 @@ + + + + + diff --git a/src/test/resources/hibernate.cfg.xml b/src/test/resources/hibernate.cfg.xml index 9c02d90..34f57fb 100644 --- a/src/test/resources/hibernate.cfg.xml +++ b/src/test/resources/hibernate.cfg.xml @@ -38,7 +38,6 @@ -