我可以在 Hibernate 实体类中有一个辅助/方便的方法吗? [复制]

Posted

技术标签:

【中文标题】我可以在 Hibernate 实体类中有一个辅助/方便的方法吗? [复制]【英文标题】:Can I have a helper/convenient method inside a Hibernate entity class? [duplicate] 【发布时间】:2017-01-20 17:05:04 【问题描述】:

我有一个实体类,里面有一个辅助方法。像这样..

@Entity
@Table(name = "MEMBER", schema = "APP_SCHEMA")
public class Member 

    private String id;
    private String externalMemberId;

    @Id
    @Column(name = "MEMBER_ID")
    public String getId() 
        return id;
    

    @Column(name = "EXTERNAL_MEMBER_ID")
    public String getExternalMemberId() 
        return externalMemberId;
    

    public String getAbc()
        return "abc";
    

当我在初始化时启动我的 jboss 服务器时出现异常

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: DataDB] Unable to build EntityManagerFactory
Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
Caused by: java.lang.reflect.InvocationTargetException
Caused by: org.hibernate.PropertyNotFoundException: Could not find a setter for property **abc** in class com.myapp.model.Member"

为什么不允许我在实体类中使用辅助/便捷方法?为什么期望与属性进行映射?我正在使用带有 Hibernate 和 JPA 的 JBoss 应用程序服务器。

【问题讨论】:

尝试在getter上使用@Transient 【参考方案1】:

Hibernate 将您的 getter 方法 getAbc() 解释为应该持久化的 abc 属性的 getter。您可以使用@Transient 注释来标记不应存储在数据库中的字段。或者尝试将注解放到 getter 方法的字段中。

【讨论】:

以上是关于我可以在 Hibernate 实体类中有一个辅助/方便的方法吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 映射及查询

Hibernate的实体类中为什么要继承Serializable?

hibernate Day2

struts2和hibernate 传值问题和实体类设计问题

Hibernate在实体类中对于时间的注解

如何在春季使用hibernate在实体类中获取inet