خطای ora-00972 identifier is too long در oracle xe 11g با وایز

+1 رأی
میانگین بازدید روزانه 0.5245 بازدید

درحین کار با پروژه ی ایجاد شده با وایز، هنگام عملیات crud برای برخی جداول به خطای فوق برمیخورد که در استفاده از h2 ندارد ومحدودیت کراکتر را 30 کارکتر در نظر میگیرد، برای حل این مشکل یا تغییر سیسست های mapping در jpa که نامگذاری را کمتر از 30 کاراکتر انجام دهد راهی وجود  دارد؟

سوال 2 ماه قبل در تالار برنامه نویسی توسط nirvana (65 امتیاز)
ویرایش 2 ماه قبل توسط Saeed Zarinfam

1 جواب

0 رأی
منشأ این مساله محدودیتی است که اراکل بر روی طول شناسه ها (نام جداول، ستون ها، ...) گذاشته است. بنابراین بایستی در نام گذاری جداول و ستون ها در annotation های jpa این محدودیت را در نظر گرفت. اگر نام ستون ها و جداول به صراحت تعیین نشوند، مقدار آن ها از روی نام فیلدها و کلاس ها استنتاج می شود که طولانی بودن نام آن ها می تواند منجر به نقض محدودیت فوق شود. احتمال این رخداد در روابط چند به چند بیشتر از سایر موارد است؛ چرا که در صورت عدم تعیین صریح نام جدول میانی، نام آن براساس به هم چسبانیدن نام دو طرف مشخص می شود.

مقداردهی همه برچسب (tag) های مربوط به اسامی در مدل ورودی وایز می تواند تا حد خوبی موجب رعایت این محدودیت گردد.
جواب 2 ماه قبل توسط mahdi mostafazadeh_5 (65 امتیاز)
لطفا نگاهی به به لینک زیر بیاندازید. احتمالاً همان چیزی است که شما به دنبال آن هستید.
https://stackoverflow.com/questions/30577953/hibernate-generates-too-long-identifiers-for-oracle?rq=1&utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
درود و ممنون از شما

با استفاده  از لینک ارسالی شما و توضیحات HIBERNATE،  کلاس PhysicalNamingStrategy و ImplicitNamingStrategy  را implement و در فایل config معرفی کردم اما هیچ تغییری ایجاد نشد

hibernate.physical_naming_strateg = ir.iasco.sale.requestmanagement.dao.ImprovedNamingStrategy
hibernate.implicit_naming_strategy=ir.iasco.sale.requestmanagement.dao.ImprovedImplicitNamingStrategy;

 و این هم امتحان کردم:
spring.jpa.hibernate.naming.physical_naming_strateg = ir.iasco.sale.requestmanagement.dao.ImprovedNamingStrategy
spring.jpa.hibernate.naming.implicit_naming_strategy=ir.iasco.sale.requestmanagement.dao.ImprovedImplicitNamingStrategy;

اما بنظر مییاد سیستم متوجه نمیشود .به جز مواردی که فرمودید  به این که محدود کنیم identifier  را نیاز داریم.

لطف میفرمایی راهنمایی کنید.
باتشکر

سوال های مشابه

0 رأی
1 جواب میانگین بازدید روزانه 1.1826 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.8164 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.360 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.3633 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2327 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2341 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1529 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.1836 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.3469 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.2349 بازدید
سوال 6 ماه قبل در تالار برنامه نویسی توسط gatity (72 امتیاز)
کانال تلگرام جواب یاب
...