Never Back Down

forget who you are and who you were to continue your life !!

Những lỗi của Frameword Hibernate Tôi từng gặp .

- QuerySyntaxException .... Vì hibernate ko mapping được đến những class mà bạn cần . Hoặc những class đó tham chiếu tới những bảng trong cơ sở dữ liệu bị sai. Một nguyên nhân khác là do sai cấu trúc của lệnh Query ===> nên nhớ khi dùng Hibernate mỗi câu query sẽ query tới tên object chứ ko phải là tên bảng trong DB. vd select * from Student ===> Student là table ....... Những trong Hibernate khi ta query thì là from Student ==> Student ở đây là tên Object.... ta cần nhìn vào những EJB đã được ta tạo dựng . tên của chúng như thế nào .
- Lỗi về Dialiect : Dialect là những thuật ngữ ( hay là từ khóa ) ... ở mỗi cơ sở dữ liệu có 1 nhóm thuật ngữ khác nhau vd:MySQL ,Oracle, SQLServer ...... ta cần phải chọn đúng dialect cho nó nếu không nó sẽ báo lỗi này .... 1 trường hợp khác xảy ra nữa là ta đã khai báo dialect trong hibernate,hbm.xml rồi nhưng lại vẫn gặp nó ... Đơn giản là khi cơ sở dữ liệu bạn không kết nối đến được ở FactorySession sẽ throw ra 1 ngoại lệ (Exception) và khi đến Dialect ngoại lệ đó được bắt và khiến ta hiểu lầm là Dialect , trường hợp này cần coi lại tên Cơ sở dữ liệu , password , kết nối và cấu hình JDBC thật kĩ .
- Lỗi khác là do 1 số Object do Netbean tự tạo ra sẽ có thêm những quan hệ 1 nhiều nhiều nhiều nhiều 1 ..... Dĩ nhiên đôi khi ở phần này sẽ bị báo lỗi .. Ta vào Object đó xóa phần code về 1 nhiều đó đi ... Có lẽ nó được sử dụng theo 1 phương pháp nào đó . Những giờ tôi hiểu đến đó thôi .

28/12/2010
Khi đang save 1 object vào DB ... Tôi ko chú ý kiểm tra lại DB ... và object đã ko được lưu. Tìm một hồi ... tôi thấy phải có 1 dòng trong file cấu hình hibernate là <property name="connection.autocommit">true</property> . Lúc đầu khi nó ko lưu . Tôi dùng hệ quản trị DB SQLServer để mở table lên xem .. kết quả là mở ko được ... rõ ràng 1 điều là Hibernate đang giữ kết nối với table này , và nó ko nhả ra cho việc truy xuất của tôi = hệ quản trị. Khi thêm 1 dòng <property name="connection.autocommit">true</property> thì chạy rất tốt , tôi nghĩ object lúc đó đã commit lên DB rồi ... nếu ko có dòng đó thì có lẽ tôi phải sử dụng tới transaction mới commit được . Nếu ko Application sẽ giữ kết nối . Đây có lẽ là 1 lỗi ===> và cũng có thể là 1 điểm để tấn công DB ... nếu như người đó thay đổi được code .

Anti Shadow Defender Install C, C++ compiler in Linux

Write a comment

New comments have been disabled for this post.

June 2012
M T W T F S S
May 2012July 2012
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30