עבור לתוכן

Nhibernet & Hebrew

Featured Replies

פורסם

היי

יש לי בעיה

כאשר אני רוצה לשמור סטרינג (ב C# ) אשר מכיל מידע בעברית

ע"י שימוש ב Nhibernet אני מקבל ערך מזובל בבסיס הנתונים (MYSQL)

הגדרתי את השדה כ UTF8 (בבסיס הנתונים) אך זה לא ניראה משפיע

יש לכם הצעות ?

תודה

פורסם

אני לא יודעת איך זה עם MYSQL וNHibernate, אבל נתקלתי באותה בעיה עם Oracle וhibernate-

מה שצריך לעשות זה במיפוי של הייברנט (.hbm.xml) למפות את השדה הבעייתי לקלאס חדש שאתה תכתוב.

הקלאס צריך לרשת מStringType (הקלאס הדיפולטי של הייברנט לשמירת מחרוזות), ולממש את הפונקציה:

set(PreparedStatement st, Object value, int index) 

שם בעצם צריך לשמור את הstring שלך כמו שצריך לDB (באורקל זה אומר להשתמש בפונקציה setFormOfUse על הPreparedStatement לפני שמירת המחרוזת).

ממש קל לכתוב את הקלאס הזה. תסתכל על איך StringType של הייברנט כתוב ופשוט תעקוב אחרי זה (איזה יופי שהייברנט זה קוד פתוח).

אם אתה רוצה עוד פירוט, הנה לינק עם דוגמאות של איך עושים את זה (כולל מימוש של הקלאס) בעולם של אורקל והייברנט:

http://forum.hibernate.org/viewtopic.php?t=925490

נ.ב.

זאת החברה של יואב. זה בסדר, יואב לא גילה משהו חדש על עצמו (וטוב שכך, הוא יהיה בחורה מאוד מכוערת).

פורסם

ל-nhibernate לא אמורה להיות בעיה עקרונית עם שמירת ערכים בעברית, עשיתי את זה עם nhibernate מול בסיסי נתונים אחרים ועם hibernate על mysql. פתרונות כמו שהוצעו פה שדורשים שינויים בתכנות ובניית עצמים ומתודות מיוחדות הייתי שומר כמפלט אחרון, אם זה נדרש זה כבר ממש bug שיש לדווח עליו.

לגבי mysql, הגדרת השדה בטבלה כ-utf8 בדרך כלל לא מספיקה, תבדוק גם שהטבלה וה-database עצמו מוגדרים כ-utf8, מעבר לזה גם החיבור עצמו בין האפליקציה ולבין mysql יש לו collation משלו וצריך להגדיר אותו בהתאם.

- תבדוק שבקובץ הקונפיגורציה של nhibernate ב-connection string מוגדר CharSet=utf8.

- תפתח את קובץ הקונפיגורציה של mysql, ה-C:\my.ini (יכול להיות שהוא יושב אצלך במקום אחר) ותוסיף לו את ההגדרה: default-character-set=utf8.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים