Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.07 KB | None | 0 0
  1. drop table EX_USER;
  2. drop table EX_PROVIDER;
  3.  
  4. create table EX_PROVIDER
  5. ( id number(*,0) not null
  6. ,name varchar2(255) not null
  7. ,primary key (id)
  8. );
  9.  
  10. insert into EX_PROVIDER (id,name) values (0 ,'Provider_A');
  11. insert into EX_PROVIDER (id,name) values (1 ,'Provider_B');
  12. commit;
  13.  
  14. create table EX_USER
  15. ( id number(*,0) not null
  16. , ex_provider_id number(*,0) not null
  17. ,name varchar2(255)
  18. ,location varchar2(255)
  19. ,primary key (id)
  20. ,constraint ex_user_provider_fk foreign key(ex_provider_id) references EX_PROVIDER(id)
  21. );
  22.  
  23. insert into EX_USER (id,ex_provider_id,name,location) values (0,0,'User_1','Munich');
  24. insert into EX_USER (id,ex_provider_id,name,location) values (1,0,'User_2','Berlin');
  25. insert into EX_USER (id,ex_provider_id,name,location) values (2,1,'User_3','Munich');
  26. commit;
  27.  
  28. @Entity
  29. @Table(name="EX_PROVIDER")
  30. @NamedQuery(name="ExProvider.findAll", query="SELECT e FROM ExProvider e")
  31. public class ExProvider implements Serializable {
  32. private static final long serialVersionUID = 1L;
  33.  
  34. @Id
  35. @SequenceGenerator(name="EX_PROVIDER_ID_GENERATOR", sequenceName="KONST_SD_SEQ")
  36. @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EX_PROVIDER_ID_GENERATOR")
  37. private long id;
  38.  
  39. private String name;
  40.  
  41. //bi-directional many-to-one association to ExUser
  42. @OneToMany(mappedBy="exProvider",fetch=FetchType.LAZY)
  43. private Set<ExUser> exUsers=new HashSet<ExUser>();
  44.  
  45. public ExProvider() {
  46. }
  47.  
  48. public long getId() {
  49. return this.id;
  50. }
  51.  
  52. public void setId(long id) {
  53. this.id = id;
  54. }
  55.  
  56. public String getName() {
  57. return this.name;
  58. }
  59.  
  60. public void setName(String name) {
  61. this.name = name;
  62. }
  63.  
  64. public Set<ExUser> getExUsers() {
  65. return this.exUsers;
  66. }
  67.  
  68. public void setExUsers(Set<ExUser> exUsers) {
  69. this.exUsers = exUsers;
  70. }
  71.  
  72. public ExUser addExUser(ExUser exUser) {
  73. getExUsers().add(exUser);
  74. exUser.setExProvider(this);
  75.  
  76. return exUser;
  77. }
  78.  
  79. public ExUser removeExUser(ExUser exUser) {
  80. getExUsers().remove(exUser);
  81. exUser.setExProvider(null);
  82.  
  83. return exUser;
  84. }
  85. }
  86.  
  87. @Entity
  88. @Table(name="EX_USER")
  89. @NamedQuery(name="ExUser.findAll", query="SELECT e FROM ExUser e")
  90. public class ExUser implements Serializable {
  91. private static final long serialVersionUID = 1L;
  92.  
  93. @Id
  94. @SequenceGenerator(name="EX_USER_ID_GENERATOR", sequenceName="KONST_SD_SEQ")
  95. @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EX_USER_ID_GENERATOR")
  96. private long id;
  97.  
  98. private String location;
  99.  
  100. private String name;
  101.  
  102. //bi-directional many-to-one association to ExProvider
  103. @ManyToOne(fetch=FetchType.LAZY)
  104. @JoinColumn(name="EX_PROVIDER_ID")
  105. private ExProvider exProvider;
  106.  
  107. public ExUser() {
  108. }
  109.  
  110. public long getId() {
  111. return this.id;
  112. }
  113.  
  114. public void setId(long id) {
  115. this.id = id;
  116. }
  117.  
  118. public String getLocation() {
  119. return this.location;
  120. }
  121.  
  122. public void setLocation(String location) {
  123. this.location = location;
  124. }
  125.  
  126. public String getName() {
  127. return this.name;
  128. }
  129.  
  130. public void setName(String name) {
  131. this.name = name;
  132. }
  133.  
  134. public ExProvider getExProvider() {
  135. return this.exProvider;
  136. }
  137.  
  138. public void setExProvider(ExProvider exProvider) {
  139. this.exProvider = exProvider;
  140. }
  141. }
  142.  
  143. @SuppressWarnings("unchecked")
  144. private void demo() {
  145. EntityManager em = null;
  146. try {
  147. em = emf.createEntityManager();
  148. EntityTransaction tx = em.getTransaction();
  149. try {
  150. tx.begin();
  151. Session session = (Session) em.getDelegate();
  152.  
  153. Criteria crit = session.createCriteria(ExProvider.class, "provider")
  154. .createCriteria("exUsers", "user")
  155. .add(Restrictions.eq("user.location","Berlin"))
  156. ;
  157.  
  158. List<ExProvider> providerList=(List<ExProvider>)crit.list();
  159. logExProviderList(providerList);
  160.  
  161. tx.commit();
  162. } finally {
  163. if (tx!=null && tx.isActive()) tx.rollback();
  164. }
  165. } finally {
  166. if (em!=null) em.close();
  167. }
  168. }
  169.  
  170. private void logExProviderList(List<ExProvider> providerList) {
  171. for (ExProvider provider: providerList) {
  172. logger.info("Criteria: provider=["+provider.getId()+"]");
  173.  
  174. for (ExUser user : provider.getExUsers()) {
  175. logger.info("Criteria: user=["+user.getId()+"] name=["+user.getName()+"] location=["+user.getLocation()+"]");
  176. }
  177.  
  178. }
  179. }
  180.  
  181. SELECT this_.id AS id43_1_,
  182. this_.name AS name43_1_,
  183. user1_.id AS id44_0_,
  184. user1_.EX_PROVIDER_ID AS EX4_44_0_,
  185. user1_.location AS location44_0_,
  186. user1_.name AS name44_0_
  187. FROM EX_PROVIDER this_
  188. INNER JOIN EX_USER user1_
  189. ON this_.id=user1_.EX_PROVIDER_ID
  190. WHERE user1_.location=?;
  191.  
  192. SELECT exusers0_.EX_PROVIDER_ID AS EX4_43_1_,
  193. exusers0_.id AS id1_,
  194. exusers0_.id AS id44_0_,
  195. exusers0_.EX_PROVIDER_ID AS EX4_44_0_,
  196. exusers0_.location AS location44_0_,
  197. exusers0_.name AS name44_0_
  198. FROM EX_USER exusers0_
  199. WHERE exusers0_.EX_PROVIDER_ID=?;
  200.  
  201. Criteria: provider=[0]
  202. Criteria: user=[1] name=[User_2] location=[Berlin]
  203. Criteria: user=[0] name=[User_1] location=[Munich]
  204.  
  205. @SuppressWarnings("unchecked")
  206. private void demo() {
  207. EntityManager em = null;
  208. try {
  209. em = emf.createEntityManager();
  210. EntityTransaction tx = em.getTransaction();
  211. try {
  212. tx.begin();
  213. Session session = (Session) em.getDelegate();
  214.  
  215. Criteria crit = session.createCriteria(ExProvider.class, "provider")
  216. .createCriteria("exUsers", "user")
  217. .add(Restrictions.eq("user.location","Berlin"))
  218. .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
  219. ;
  220.  
  221. List<ExProvider> providerList=(List<ExProvider>)crit.list();
  222. logExProviderMapList(providerList);
  223.  
  224. tx.commit();
  225. } finally {
  226. if (tx!=null && tx.isActive()) tx.rollback();
  227. }
  228. } finally {
  229. if (em!=null) em.close();
  230. }
  231. }
  232.  
  233. private void logExProviderMapList(List providerList) {
  234. Iterator iter = providerList.iterator();
  235. while ( iter.hasNext() ) {
  236. Map map = (Map) iter.next();
  237. ExProvider provider = (ExProvider) map.get("provider");
  238. if(provider!=null) {
  239. logger.info("Criteria: provider=["+provider.getId()+"]");
  240. }
  241.  
  242. ExUser user = (ExUser) map.get("user");
  243. if(user!=null) {
  244. logger.info("Criteria: user=["+user.getId()+"] name=["+user.getName()+"] location=["+user.getLocation()+"]");
  245. }
  246. }
  247. }
  248.  
  249. SELECT this_.id AS id43_1_,
  250. this_.name AS name43_1_,
  251. user1_.id AS id44_0_,
  252. user1_.EX_PROVIDER_ID AS EX4_44_0_,
  253. user1_.location AS location44_0_,
  254. user1_.name AS name44_0_
  255. FROM EX_PROVIDER this_
  256. INNER JOIN EX_USER user1_
  257. ON this_.id=user1_.EX_PROVIDER_ID
  258. WHERE user1_.location=?;
  259.  
  260. Criteria: provider=[0]
  261. Criteria: user=[1] name=[User_2] location=[Berlin]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement