0 امتیاز
قبل در برنامه نویسی توسط (139 امتیاز)
برچسب گذاری دوباره قبل توسط
بعد از انجام عملیات search نتیجه جستجوی انجام شده را تغییر دادیم و بنابراین totalsize و pagenumber تغییر کرده است. چگونه می توان این موارد را تغییر داد؟ (

مثال مورد نظر بدین صورت است: هر request تعدادی Responsible دارد که ممکن است از هر واحدی باشند و Role مرتبط را دارند. میخواهیم لیست درخواستهایی که مسئولی از واحد خواسته شده ندارد را جستجو کنیم. آیا می توان از fillcriteria استفاده کرد. در حال حاضر ما super.search را انجام می دهیم و بعد مواردی را که می خواهیم حذف می کنیم ولی در مورد datapage به مشکل برخوردیم.

)

متشکرم
قبل توسط (1.4هزار امتیاز)
ویرایش شده قبل توسط
بله، به طور کلی برای اضافه‎کردن criteriaهای مخصوص میشه از fillCriteria در DAO استفاده کرد. برای راهنمایی بیشتر ارتباط بین موجودیت‎های درگیر در کوئری رو بگید.

2 پاسخ

0 امتیاز
قبل توسط (157 امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

روش درست برای اعمال یک یا چند فیلتر آن است که فیلتر (های) مورد نظر را به بخش Restriction (Where Clause) کوئری اضافه نمائیم و اجازه دهیم که اعمال تمامی فیلترها توسط DBMS مدیریت شود. برای اینکار می توان متد fillCriteria را در کلاس Dao مورد نظر Override کرد:


@Override
	protected void fillCriteria(CriteriaQuery criteria, Root<GeoUnitEntity> root, SearchFilter<Object> searchFilter,
			String sortProperty, boolean sortAscending, JpaCriteriaAssociationMap criteriaAssociationMap) {
		super.fillCriteria(criteria, root, searchFilter, sortProperty, sortAscending, criteriaAssociationMap);
		CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
		
		// Create subquery here ...
		
		Predicate notExists = cb.not(cb.exists(subquery));
		criteria.where(cb.and(criteria.getRestriction(), notExists));
	}

برای ایجاد subquery مورد نیاز خود می توانید از https://stackoverflow.com/questions/13859780/building-a-query-using-not-exists-in-jpa-criteria-api کمک بگیرید.

0 امتیاز
قبل توسط (139 امتیاز)

سلام. ارتباط بین درخواست و مسئول درخواست بدین صورت است. هر مسئول ممکن است role متفاوتی داشته باشد. به طور مثال درخواست می تواند هم  از واحد فروش و هم مهندسی فروش مسئول داشته باشد. برای به دست آوردن لیست درخواستهایی که مسئولی با نقش کارشناسی مهندسی فروش ندارند باید چگونه اطلاعات را بدست آوریم؟ متشکرم

ارتباط درخواست و مسئول درخواست

قبل توسط (1.4هزار امتیاز)
منظورتون از role، نقشِ پرتالی هست یا سِمتِ پرتالی (post)؟ منظورتون از واحد، سازمانِ پرتالی (organization) هست یا سمتِ پرتالی (post)؟
قبل توسط (139 امتیاز)
منظورم از role همان نقش پرتالی است. منظورم از واحد هم پستهایی است که مثلا نقش کارشناسی فروش داخل و کارشناسی مهندسی فروش را دارند. ما یک postentity داریم که از پست پرتالی دیتا می گیرد ولی entity ای برای role پرتال در پروژه تعریف نکرده ایم. در حال حاضر می خواهیم درخواستهایی را لیست کنیم که هیچ مسئولی با postentity  که مثلا آن postentity نقش پرتالی کارشناسی فروش داخل را نداشته باشد را بیاورد.
قبل توسط (1.4هزار امتیاز)
1) برای کوئری زدن مستقیم، وجود موجودیت role و ارتباط آن با post الزامی است. دو) اگر نمی‎خواهید role رو اضافه کنید، به کمک PostQueryFactory، می‌توانید postهای دارای roleهای مورد نظر خود را واکشی کنید و سپس کوئری خودتون را با توجه به post_idها بزنید. البته اگر تعداد سمت‌هایی که این نقش‌ها را دارند زیاد باشد، راه دوم پیشنهاد نمی‎شود.

سوالات مشابه

+1 امتیاز
1 پاسخ 444 بازدید
0 امتیاز
2 پاسخ 705 بازدید
+1 امتیاز
1 پاسخ 273 بازدید
0 امتیاز
1 پاسخ 275 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط nirvana (89 امتیاز)
0 امتیاز
1 پاسخ 348 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط nirvana (89 امتیاز)
+1 امتیاز
0 پاسخ 253 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط gatity (139 امتیاز)
+1 امتیاز
1 پاسخ 257 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط nirvana (89 امتیاز)
0 امتیاز
1 پاسخ 275 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط nirvana (89 امتیاز)
+1 امتیاز
1 پاسخ 308 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط Saeed Mirshams (186 امتیاز)
0 امتیاز
1 پاسخ 293 بازدید
...