Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- drop table EX_USER;
- drop table EX_PROVIDER;
- create table EX_PROVIDER
- ( id number(*,0) not null
- ,name varchar2(255) not null
- ,primary key (id)
- );
- insert into EX_PROVIDER (id,name) values (0 ,'Provider_A');
- insert into EX_PROVIDER (id,name) values (1 ,'Provider_B');
- commit;
- create table EX_USER
- ( id number(*,0) not null
- , ex_provider_id number(*,0) not null
- ,name varchar2(255)
- ,location varchar2(255)
- ,primary key (id)
- ,constraint ex_user_provider_fk foreign key(ex_provider_id) references EX_PROVIDER(id)
- );
- insert into EX_USER (id,ex_provider_id,name,location) values (0,0,'User_1','Munich');
- insert into EX_USER (id,ex_provider_id,name,location) values (1,0,'User_2','Berlin');
- insert into EX_USER (id,ex_provider_id,name,location) values (2,1,'User_3','Munich');
- commit;
- @Entity
- @Table(name="EX_PROVIDER")
- @NamedQuery(name="ExProvider.findAll", query="SELECT e FROM ExProvider e")
- public class ExProvider implements Serializable {
- private static final long serialVersionUID = 1L;
- @Id
- @SequenceGenerator(name="EX_PROVIDER_ID_GENERATOR", sequenceName="KONST_SD_SEQ")
- @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EX_PROVIDER_ID_GENERATOR")
- private long id;
- private String name;
- //bi-directional many-to-one association to ExUser
- @OneToMany(mappedBy="exProvider",fetch=FetchType.LAZY)
- private Set<ExUser> exUsers=new HashSet<ExUser>();
- public ExProvider() {
- }
- public long getId() {
- return this.id;
- }
- public void setId(long id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Set<ExUser> getExUsers() {
- return this.exUsers;
- }
- public void setExUsers(Set<ExUser> exUsers) {
- this.exUsers = exUsers;
- }
- public ExUser addExUser(ExUser exUser) {
- getExUsers().add(exUser);
- exUser.setExProvider(this);
- return exUser;
- }
- public ExUser removeExUser(ExUser exUser) {
- getExUsers().remove(exUser);
- exUser.setExProvider(null);
- return exUser;
- }
- }
- @Entity
- @Table(name="EX_USER")
- @NamedQuery(name="ExUser.findAll", query="SELECT e FROM ExUser e")
- public class ExUser implements Serializable {
- private static final long serialVersionUID = 1L;
- @Id
- @SequenceGenerator(name="EX_USER_ID_GENERATOR", sequenceName="KONST_SD_SEQ")
- @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="EX_USER_ID_GENERATOR")
- private long id;
- private String location;
- private String name;
- //bi-directional many-to-one association to ExProvider
- @ManyToOne(fetch=FetchType.LAZY)
- @JoinColumn(name="EX_PROVIDER_ID")
- private ExProvider exProvider;
- public ExUser() {
- }
- public long getId() {
- return this.id;
- }
- public void setId(long id) {
- this.id = id;
- }
- public String getLocation() {
- return this.location;
- }
- public void setLocation(String location) {
- this.location = location;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public ExProvider getExProvider() {
- return this.exProvider;
- }
- public void setExProvider(ExProvider exProvider) {
- this.exProvider = exProvider;
- }
- }
- @SuppressWarnings("unchecked")
- private void demo() {
- EntityManager em = null;
- try {
- em = emf.createEntityManager();
- EntityTransaction tx = em.getTransaction();
- try {
- tx.begin();
- Session session = (Session) em.getDelegate();
- Criteria crit = session.createCriteria(ExProvider.class, "provider")
- .createCriteria("exUsers", "user")
- .add(Restrictions.eq("user.location","Berlin"))
- ;
- List<ExProvider> providerList=(List<ExProvider>)crit.list();
- logExProviderList(providerList);
- tx.commit();
- } finally {
- if (tx!=null && tx.isActive()) tx.rollback();
- }
- } finally {
- if (em!=null) em.close();
- }
- }
- private void logExProviderList(List<ExProvider> providerList) {
- for (ExProvider provider: providerList) {
- logger.info("Criteria: provider=["+provider.getId()+"]");
- for (ExUser user : provider.getExUsers()) {
- logger.info("Criteria: user=["+user.getId()+"] name=["+user.getName()+"] location=["+user.getLocation()+"]");
- }
- }
- }
- SELECT this_.id AS id43_1_,
- this_.name AS name43_1_,
- user1_.id AS id44_0_,
- user1_.EX_PROVIDER_ID AS EX4_44_0_,
- user1_.location AS location44_0_,
- user1_.name AS name44_0_
- FROM EX_PROVIDER this_
- INNER JOIN EX_USER user1_
- ON this_.id=user1_.EX_PROVIDER_ID
- WHERE user1_.location=?;
- SELECT exusers0_.EX_PROVIDER_ID AS EX4_43_1_,
- exusers0_.id AS id1_,
- exusers0_.id AS id44_0_,
- exusers0_.EX_PROVIDER_ID AS EX4_44_0_,
- exusers0_.location AS location44_0_,
- exusers0_.name AS name44_0_
- FROM EX_USER exusers0_
- WHERE exusers0_.EX_PROVIDER_ID=?;
- Criteria: provider=[0]
- Criteria: user=[1] name=[User_2] location=[Berlin]
- Criteria: user=[0] name=[User_1] location=[Munich]
- @SuppressWarnings("unchecked")
- private void demo() {
- EntityManager em = null;
- try {
- em = emf.createEntityManager();
- EntityTransaction tx = em.getTransaction();
- try {
- tx.begin();
- Session session = (Session) em.getDelegate();
- Criteria crit = session.createCriteria(ExProvider.class, "provider")
- .createCriteria("exUsers", "user")
- .add(Restrictions.eq("user.location","Berlin"))
- .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
- ;
- List<ExProvider> providerList=(List<ExProvider>)crit.list();
- logExProviderMapList(providerList);
- tx.commit();
- } finally {
- if (tx!=null && tx.isActive()) tx.rollback();
- }
- } finally {
- if (em!=null) em.close();
- }
- }
- private void logExProviderMapList(List providerList) {
- Iterator iter = providerList.iterator();
- while ( iter.hasNext() ) {
- Map map = (Map) iter.next();
- ExProvider provider = (ExProvider) map.get("provider");
- if(provider!=null) {
- logger.info("Criteria: provider=["+provider.getId()+"]");
- }
- ExUser user = (ExUser) map.get("user");
- if(user!=null) {
- logger.info("Criteria: user=["+user.getId()+"] name=["+user.getName()+"] location=["+user.getLocation()+"]");
- }
- }
- }
- SELECT this_.id AS id43_1_,
- this_.name AS name43_1_,
- user1_.id AS id44_0_,
- user1_.EX_PROVIDER_ID AS EX4_44_0_,
- user1_.location AS location44_0_,
- user1_.name AS name44_0_
- FROM EX_PROVIDER this_
- INNER JOIN EX_USER user1_
- ON this_.id=user1_.EX_PROVIDER_ID
- WHERE user1_.location=?;
- Criteria: provider=[0]
- Criteria: user=[1] name=[User_2] location=[Berlin]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement