如何通过JPA注释指定SQL注释?

有没有办法通过JPA注释指定SQL注释? 表和列的注释。

有没有办法通过JPA注释指定SQL注释? 表和列的注释。

否。如果要定义表和列注释,最好的选择是在生成的DDL中的事实之后,在对数据库执行它之前执行此操作。

有一种方法,至少对于MySQL来说。 这取决于您的数据库引擎。 对于MySQL,您可以将注释添加到columnDefinition。 以下是列的示例:

/** * Database id. */ @javax.persistence.Id @javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO) @javax.persistence.Column(columnDefinition = "SMALLINT UNSIGNED COMMENT 'The KEY obviously'") private Long id; 

正如您所看到的那样(“明显的键”)是列定义的一部分。 但它不是标准的JPA,因为如果更改数据库引擎需要更改它。 如果使用非标准SQL类型并更改数据库引擎,则必须更改列定义。

标准( http://savage.net.au/SQL/ )似乎没有定义任何方式来定义表或列注释(看起来他们甚至没有提到它们)。 因此,表/列的注释语法可能因DBMS而异。 我认为这就是为什么JPA没有提供通用的方法来做到这一点