我正在关注“Beginning hibernate”一书中的hibernate教程。 我看到像@Id,@ Column这样的注释是在getXXX()方法之上指定的。
如:
@Id
@GeneratedValue
public long getId()
{
return id;
}
@Column(unique=true)
public String getName()
{
return name;
}
但不是在自己的属性定义中:
private long id;
private String name;
是否有链接/引用指定注释的放置位置?以及它背后的原因。 进一步来说; Hibernate如何解释不同注释的位置,是否有指南?
我在谈论javax.persistence。* annotations
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
我看过了 http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single
我正在使用:
Hibernate 4.2.6.Final
Windows 8, 32 bit.
答案 0 :(得分:1)
可以在字段或方法上放置注释。您选择的选项实际上是个人偏好的问题,虽然我已经看到它说更喜欢字段而不是方法。
我个人更喜欢字段注释,因为我觉得它们更容易使用:
在扫描你的类时,Hibernate首先会查找带有@Id注释的字段或方法,然后相应地寻找其他映射,即。如果@Id在一个字段上,则只会扫描其他字段:默认情况下,方法上定义的任何映射都将被忽略,反之亦然,尽管可以使用以下方法修改此行为:
@Access(AccessType.PROPERTY)
@Access(AccessType.FIELD)
What is the purpose of AccessType.FIELD, AccessType.PROPERTY and @Access