【发布时间】:2011-06-01 16:13:22
【问题描述】:
由于 Hibernate JPA 2 元模型生成器的一些奇怪行为,我需要将所有实体的访问类型设置为 AccessType.FIELD。 - 因为我不想为每个类添加 @Access 注释,所以我要求一种设置默认访问类型的方法。
到目前为止,我用这个orm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
version="2.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<access>FIELD</access>
</persistence-unit-defaults>
</persistence-unit-metadata>
但这似乎被忽略了,生成器默认使用 PROPERTY 访问。
当我将此行添加到 {{orm.xml}} 时:
<access>FIELD</access>
<entity class="domain.Banner"></entity>
<entity class="domain.Stuff"></entity>
...
生成器开始尊重字段(而不是属性),但这比注释方式更糟糕。
所以我的问题是:如何设置默认的AccessType?
【问题讨论】:
-
我正在使用带有 JPA 2.0 的 Hibernate 3.6,并且主要在我的所有实体中使用字段访问。元模型生成器没有出现任何问题。元模型生成器到底有什么问题?
-
@edalorzo:我在 Spring Roo 环境中做同样的事情,即使实体没有 Roo 注释 Hibernate 只注意属性,而不是字段(除非我是 @Access 注释)
-
您是将 JPA 注释放在字段还是 getter/setter 上?如果将它们放在 getter/setters 上,JPA 将使用属性访问类型。
-
@Behrang Saeedzadeh:注释在字段上。但它是一个 spring roo 应用程序,由于某种原因,自动检测字段/属性接缝无法正常工作。