yongtree 2009-06-15 19:49
浏览 299
已采纳

JPA主键注解的位置为什么加载getter上报错?

在使用ejb开发的过程中,莫名奇妙的出现如下错误。
Caused by: org.hibernate.PropertyNotFoundException: Could not find a setter for property pk in class org.oecp.core.domain.permission.UserEntity
at org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:240)
at org.hibernate.property.BasicPropertyAccessor.getSetter(BasicPropertyAccessor.java:233)
at org.hibernate.mapping.Property.getSetter(Property.java:299)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertySetter(PojoEntityTuplizer.java:272)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.(AbstractEntityTuplizer.java:149)
at org.hibernate.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:76)
at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.(EntityEntityModeToTuplizerMapping.java:80)
at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:325)
at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:457)
at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:131)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:84)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:261)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 50 more
UserEntity:
@Entity
@Table(name = "t_c_user")
public class UserEntity extends BaseEntityBean {

private Integer userId;
private String userName;
private String password;

@Id
@Column(name = "user_id")
@GeneratedValue(strategy = GenerationType.TABLE)
public Integer getUserId() {
    return userId;
}

public void setUserId(Integer userId) {
    this.userId = userId;
}

@Column(name = "user_name")
public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

@Column
public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

}
BaseEntityBean:
@MappedSuperclass
public abstract class BaseEntityBean implements Serializable {

private static final long serialVersionUID = 1962905939086138888L;

/** 更新时间 **/
@Temporal(value=TemporalType.TIMESTAMP) 
private Date updateTime;

/** 是否删除 **/
private boolean deleted;



@Embedded
public EditState editstate ;


@Column(name = "update_time")
public Date getUpdateTime() {
    return updateTime;
}

public void setUpdateTime(Date updateTime) {
    this.updateTime = updateTime;
}

@Column(name = "deleted")
public boolean isDeleted() {
    return deleted;
}

public void setDeleted(boolean deleted) {
    this.deleted = deleted;
}


private BaseEntityBeanUtility givemeBeanUtility(){
    return new BaseEntityBeanUtility(this);
}

@Override
public String toString() {
    return givemeBeanUtility().beanToString();
}

@Override
public boolean equals(Object obj) {
    return givemeBeanUtility().equalsBean(obj);
}

@Override
public int hashCode() {
    return givemeBeanUtility().hashCodeBean();
}

@Override
protected Object clone() throws CloneNotSupportedException {
    Object obj = null;
    try {
        obj = givemeBeanUtility().cloneBean();
    } catch (Exception e) {
        throw new CloneNotSupportedException(StackTraceUtil.getStackTrace(e));
    } 

    return obj;
}

public Object getAttributeValue(String attributeName){
    return givemeBeanUtility().getAttributeVlaue(attributeName);
}

/**
 * 获取主键值
 * TODO 此方法应为抽象方法,由子类覆盖。为调试代码暂时不做抽象。以后修改为抽象方法,各子类应自己实现。
 * @author slx
 * @date 2009-6-12 上午09:15:11
 * @modifyNote
 * @return
 */
@Enumerated
public String myPk(){
    return "返回主键值";
}

}
才开始在BaseEntityBean中有个getPk()方法,以为是这里的错误,后来加上@Enumerated注解还是不行,再后来将getPk()改为myPk(),还是不行。
最后将UserEntity中的@Id注解,由getUserId()转移到属性userId上面,结果服务器就能正常运行了。实在搞不明白这是为什么?
注解是可以加在getter方法上的啊,哪位高人给小弟指点一二。

  • 写回答

1条回答 默认 最新

  • wanghaolovezlq 2009-06-15 20:07
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建