如何在com.xxxxxx.Profiles条目中解决此问题" org.hibernate.AssertionFailure:null id(在发生异常后不要刷新会话)?

时间:2016-01-08 04:34:41

标签: java mysql hibernate session

如何解决此问题org.hibernate.AssertionFailure: null id in com.xxxxxx.Profiles entry (don't flush the Session after an exception occurs)

我正在使用hibernate和Mysql,我想将数据插入到我的数据库的表中,但我无法做到。 感谢。

这是我的Dao:

public class ProfilesDao {

    public void addProfile(Profiles profile){
        Transaction tx = null;
        Session session = HibernateUtil.getSessionFactory().openSession();
        try{
            tx = session.beginTransaction();
            session.save(profile);
            session.getTransaction().commit();
        } catch (Exception e){
            e.printStackTrace();
            if(tx != null){
                tx.rollback();
            }
        } finally {
            session.flush();
            session.close();
        }
    }
}

这是我的Bean:

public void addProfile(){
        Profiles profiles = new Profiles(getProfileName(),getProfileDescription());
        ProfilesDao profilesDao = new ProfilesDao();
        profilesDao.addProfile(profiles);
}

这是我的POJO:

@Entity
@Table(name="profiles"
    ,catalog="metaestudiante_project_v1"
    , uniqueConstraints = @UniqueConstraint(columnNames="profile_name") 
)
public class Profiles  implements java.io.Serializable {

     private Short profileId;
     private String profileName;
     private String profileDescription;
     private Set userses = new HashSet(0);

    public Profiles() {
    }

    public Profiles(String profileName, String profileDescription) {
        this.profileName = profileName;
        this.profileDescription = profileDescription;
    }
    public Profiles(String profileName, String profileDescription, Set userses) {
       this.profileName = profileName;
       this.profileDescription = profileDescription;
       this.userses = userses;
    }

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="profile_id", unique=true, nullable=false)
    public Short getProfileId() {
        return this.profileId;
    }

    public void setProfileId(Short profileId) {
        this.profileId = profileId;
    }

    @Column(name="profile_name", unique=true, nullable=false, length=15)
    public String getProfileName() {
        return this.profileName;
    }

    public void setProfileName(String profileName) {
        this.profileName = profileName;
    }

    @Column(name="profile_description", nullable=false, length=140)
    public String getProfileDescription() {
        return this.profileDescription;
    }

    public void setProfileDescription(String profileDescription) {
        this.profileDescription = profileDescription;
    }

    @OneToMany(fetch=FetchType.LAZY, mappedBy="profiles")
    public Set getUserses() {
        return this.userses;
    }

    public void setUserses(Set userses) {
        this.userses = userses;
    }

}

这是我的hbm.xml

<hibernate-mapping>
    <class name="com.besolapp.model.pojos.Profiles" table="profiles" catalog="metaestudiante_project_v1" optimistic-lock="version">
        <id name="profileId" type="java.lang.Byte">
            <column name="profile_id" />
            <generator class="identity" />
        </id>
        <property name="profileName" type="string">
            <column name="profile_name" length="15" not-null="true" unique="true" />
        </property>
        <property name="profileDescription" type="string">
            <column name="profile_description" length="140" not-null="true" />
        </property>
        <set name="userses" table="users" inverse="true" lazy="true" fetch="select">
            <key>
                <column name="profile_id" not-null="true" />
            </key>
            <one-to-many class="com.besolapp.model.pojos.Users" />
        </set>
    </class>
</hibernate-mapping>

这一切看起来很简单,但我收到了一个错误:

org.hibernate.AssertionFailure: null id in com.besolapp.model.pojos.Profiles entry (don't flush the Session after an exception occurs)

有人可以帮帮我吗?

0 个答案:

没有答案