由于Hibernate JPA 2 Meta Model Generator的一些奇怪行为,我需要将所有实体的访问类型设置为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?
答案 0 :(得分:0)
您是否设法找到问题的解决方案?我不确定hibernate和JPA是否支持此功能,但您可以使用包级注释。以下是http://www.ctrlspace.ca/?p=10
中类型定义的示例@TypeDefs({ @TypeDef(name = "trim", typeClass = TrimmedString.class) })
@FilterDefs({
@FilterDef(name = "ACTIVE_FILTER", defaultCondition = "((end_date is null) or (end_date >= current_date))"),
@FilterDef(name = "HISTORICAL_FILTER", defaultCondition = "(end_date < current_date)")})
package com.ctrlspace.model;
import org.hibernate.annotations.FilterDef;
import org.hibernate.annotations.FilterDefs;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import com.ctrlspace.type.TrimmedString;