gpt4 book ai didi

java - 如何为 JPA2 实体定义默认访问类型

转载 作者:搜寻专家 更新时间:2023-11-01 03:55:50 27 4
gpt4 key购买 nike

由于 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?

最佳答案

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

关于java - 如何为 JPA2 实体定义默认访问类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6204324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com