Как определить тип доступа по умолчанию для объектов JPA2 - PullRequest
4 голосов
/ 01 июня 2011

Из-за некоторого странного поведения 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 по умолчанию?

1 Ответ

0 голосов
/ 17 октября 2011

Вам удалось найти решение вашей проблемы? Я не уверен, что 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;  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...