【问题标题】:Can I have a helper/convenient method inside a Hibernate entity class? [duplicate]我可以在 Hibernate 实体类中有一个辅助/方便的方法吗? [复制]
【发布时间】: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

标签: java hibernate jpa jboss jpa-2.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2016-12-30
    • 2011-02-05
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多