【问题标题】:How to define an default Access Type for JPA2 Entities如何为 JPA 2 实体定义默认访问类型
【发布时间】: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 应用程序,由于某种原因,自动检测字段/属性接缝无法正常工作。

标签: java hibernate jpa


【解决方案1】:

您找到解决问题的方法了吗?我不确定 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;  

【讨论】:

    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 2017-08-12
    • 2021-10-22
    • 2021-09-25
    • 2017-09-22
    • 1970-01-01
    相关资源
    最近更新 更多