[Hibernate] Sử dụng các keyword của database trong hibernate

Trong Hibernate, khi cố lưu đối tượng vào bảng với bất kỳ keyword dành riêng cho database nào dưới dạng tên cột, có thể gặp phải lỗi sau …

Code:
ERROR JDBCExceptionReporter:78 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the
right syntax to use near 'Datadabase reserved keyword....
Keyword “DESC”
Trong MySQL, “DESC” là 1 keyword của database. Hãy xem một số ví dụ để nói về cách sử dụng keyword này trong Hibernate.

File mapping XML của Hibernate
Đây là file mapping XML mặc định cho 1 cột trong bảng, nó sẽ gây ra lỗi JDBCException…

XML:
<property name="desc" type="string" >
    <column name="DESC" length="255" not-null="true" />
</property>

Giải pháp
1. Bao keyword trong dấu [].

XML:
<property name="desc" type="string" >
    <column name="[DESC]" length="255" not-null="true" />
</property>
2. Sử dụng dấu nhấy đơn (‘) kèm với dấu nhấy kép (“)

XML:
<property name="desc" type="string" >
    <column name='"DESC"' length="255" not-null="true" />
</property>

Hibernate Annotation
Đây là annotation mặc định để mapping 1 cột trong bảng, nó sẽ gây ra lỗi JDBCException…

Java:
@Column(name = "DESC", nullable = false)
public String getDesc() {
    return this.desc;
}
Giải pháp
1. Bao keyword trong dấu [].

Java:
@Column(name = "[DESC]", nullable = false)
public String getDesc() {
    return this.desc;
}
2. Sử dung dấu nhấy kép (“) theo cùng.

Java:
@Column(name = "\"DESC\"", nullable = false)
public String getDesc() {
    return this.desc;
}

Kết luận
Giải pháp tương tự này cũng có thể được áp dụng cho các keyword như tên bảng.



Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau

Bài viết tham khảo tại: https://mkyong.com/hibernate/how-to-use-database-reserved-keyword-in-hibernate/
 

Bình luận