【问题标题】:Hibernate IllegalArgumentException calling setterHibernate IllegalArgumentException 调用 setter
【发布时间】:2011-09-08 03:34:59
【问题描述】:

我想我的mapping issue 已经解决了,但现在我遇到了一个新错误。当我尝试运行我的测试方法时,我现在看到“PropertyAccessException:调用 PageComment.userMadeTo 的 setter 时发生 IllegalArgumentException”。我不确定是什么原因造成的,我相信我的代码中的 getter 和 setter 都很好,所以也许映射仍然有问题?

HBM 用户:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="User" table="user">
    <id name="username" column="Username" type="string">
        <generator class="assigned"></generator>
    </id>
    <property name="password" column="Password" type="string"></property>
    <property name="firstname" column="Firstname" type="string"></property>
    <property name="surname" column="Surname" type="string"></property>
    <property name="email" column="Email" type="string"></property>
    <property name="admin" column="Admin" type="integer"></property>

    <set name="commentsMadeTo">
        <key column="UserMadeTo"/>
        <one-to-many class="PageComment"/>
    </set>
</class>
</hibernate-mapping>

用于页面评论的 HBM:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="PageComment" table="PageComment">
    <composite-id>
        <key-property name="userMadeBy" column="UserMadeBy" type="string" />
        <key-property name="time" column="Time" type="integer" />
        <generator class="assigned"></generator>
    </composite-id>
    <property name="commentText" column="CommentText" type="string"></property>
    <many-to-one name="userMadeTo" class="User" column="UserMadeTo" />
</class>
</hibernate-mapping>

userMadeTo 属性的 Getter/Setter:

public void setUserMadeBy(String aUsername)
{
    userMadeBy = aUsername;
}

public String getUserMadeTo()
{
    return userMadeTo;
}

【问题讨论】:

    标签: java sql xml hibernate orm


    【解决方案1】:
      <many-to-one name="userMadeTo" class="User" column="UserMadeTo" />
    

    根据您的映射,PageComment 中的userMadeTo 应该返回User 类而不是字符串。所以,setter 和 getter 应该是:

    public class PageComment{
    
        private User user;
    
        public void setUserMadeBy(User aUser)
        {
            this.user = aUser;
        }
    
        public User getUserMadeTo()
        {
            return this.user;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      相关资源
      最近更新 更多