java - 使用 hbm.xml 的 Hibernate 中主键的强制 setter

标签 java xml hibernate jpa hbm

是否可以使用 Hibernate XML 映射配置来避免主键的 setter?使用注释时,您不必声明 setter 方法。参见示例。我正在使用 Hibernate 版本 4.1.2。

  1. 基于 XML 的配置

    public class Entity {
        private Integer id;
    
        public Integer getId() {
            return id;
        }
    }
    
    <class name="Language" table="language">
        <id name="id" column="id">
            <generator class="native" />
        </id>
    </class>
    

    初始化Hibernate时抛出异常

    Caused by: org.hibernate.PropertyNotFoundException: Could not find a setter for property id in class net.kreuzman.eshop.core.domain.l10n.Language
        at org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:252)
        at org.hibernate.property.BasicPropertyAccessor.getSetter(BasicPropertyAccessor.java:245)
        at org.hibernate.mapping.Property.getSetter(Property.java:325)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertySetter(PojoEntityTuplizer.java:444)
        at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:182)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:82)
    ... 49 more
    
  2. 基于注解的配置

    @Entity
    @Table(name="entity")
    public class Entity {
        @Id
        @Column(name="id")
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Integer id;
    
            public Integer getId() {
                 return id;
            }
    }
    

这很有效。

最佳答案

您可以将访问类型设置为字段,这将实现与将注解放在字段上相同的效果。

<class name="Language" table="language">
    <id name="id" column="id" access="field">
        <generator class="native" />
    </id>
</class>

关于java - 使用 hbm.xml 的 Hibernate 中主键的强制 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10334364/

相关文章:

java - Hibernate 有时不提取 uuid 引用的实体

java - 如何从 JNativeHook 库中删除日志记录数据

java - JOGL:从 GLJPanel 获取 GL()?

java - java中字符串的空值检查

PHP 也解析来自包含 xsd 的 Web 服务的响应

xml - 如何将 Xml 文件转换为文本文件

android - ScrollView 不工作(它不滚动布局)

hibernate - Grails-非空属性仅对并发用户引用空值或瞬时值错误

java - 将执行哪个重载方法以及为什么?

java - 从 hibernate 模型生成图表