是否可以使用 Hibernate XML 映射配置来避免主键的 setter?使用注释时,您不必声明 setter 方法。参见示例。我正在使用 Hibernate 版本 4.1.2。
基于 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
基于注解的配置
@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/