Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate在@Access方面不符合JPA?_Java_Hibernate_Jpa_Annotations - Fatal编程技术网

Java Hibernate在@Access方面不符合JPA?

Java Hibernate在@Access方面不符合JPA?,java,hibernate,jpa,annotations,Java,Hibernate,Jpa,Annotations,根据我的JPA2.0书(和在线文档),我应该能够在单个实体或实体层次结构中混合字段和属性访问。类上的注释指定默认访问权限。当放置在字段或属性上时,getter@Access可以指定应覆盖此字段的默认值 @Entity @Access(AccessType.FIELD) Class Foo { @Id int id; @Column(name = "myfield") String myField; @Column(name = "myProp") @Access(A

根据我的JPA2.0书(和在线文档),我应该能够在单个实体或实体层次结构中混合字段和属性访问。类上的注释指定默认访问权限。当放置在字段或属性上时,getter@Access可以指定应覆盖此字段的默认值

@Entity
@Access(AccessType.FIELD)
Class Foo {

  @Id
  int id;

  @Column(name = "myfield")
  String myField;

  @Column(name = "myProp")
  @Access(AccessType.PROPERTY)
  public int getMyProp () {
    return 3;
  }

  public void setMyProp (int p) {
    // do nothing
  }
}
此类应生成一个包含三列的表。但是,Hibernate没有这样做…表中缺少“myProp”列,因为Hibernate显然从实体ID获取其字段与属性的线索,并与之一起运行…完全忽略了关于@Access的JPA规范


谁能证实这一点,或者我在什么地方犯了一个愚蠢的错误吗?

我见过类似的(不一样但相似)问题,因此我不排除这可能是一个新问题(TCK似乎并不详尽)。但是您使用的是什么版本的Hibernate?您是否尝试了最新版本?

根据文档,您的代码似乎是正确的。顶部的@Access(AccessType.FIELD)注释是不必要的,因为您注释了字段int id; 这告诉hibernate使用字段访问。我尝试了一个非常类似的例子,注释和xml配置混合在一起。这会导致相同的行为,因此可能是hibernate中的一个bug


我试用了hibernate 3.5.3

hibernate 3.5.3-FINAL,这是6月17日的最新版本。我看到了HHH-5004,虽然它与手头的问题无关,但它确实让我觉得“访问”根本不被Hibernate社区使用。你认为我应该在那里打开一个bug吗?@HDave:这就是我要做的(我通常会用另一个实现来仔细检查行为,例如EclipseLink),然后提到规范的相关部分以及它与RI一起工作的事实。测试用例通常是受欢迎的,有助于更快地修复问题。