Hibernate 如何映射实体和组件

Hibernate 如何映射实体和组件,hibernate,Hibernate,我有一个实体注释和组件FavoriteNote,下面是表定义: CREATE TABLE NOTE ( ID INTEGER, TITLE VARCHAR(100) CHARACTER SET UTF8, CONTENT BLOB SUB_TYPE 1 CHARACTER SET UTF8, TYPE_NO INTEGER, DEL SMALLINT, CREATE_DATE TIMESTAMP, UPDATE_DATE TIMESTAMP); CREATE TAB

我有一个实体注释和组件FavoriteNote,下面是表定义:

CREATE TABLE NOTE (
  ID INTEGER,
  TITLE VARCHAR(100) CHARACTER SET UTF8,
  CONTENT BLOB SUB_TYPE 1 CHARACTER SET UTF8,
  TYPE_NO INTEGER,
  DEL SMALLINT,
  CREATE_DATE TIMESTAMP,
  UPDATE_DATE TIMESTAMP);

CREATE TABLE FAVORITE (
  NOTE_NO INTEGER NOT NULL,
  DROP_IN_DATE DATE);
java代码是:

public class FavoriteNote {
    private Note note;
    private Date dropInDate;

    public Note getNote() {
        return note;
    }

    public void setNote(Note note) {
        this.note = note;
    }

    public Date getDropInDate() {
        return dropInDate;
    }

    public void setDropInDate(Date dropInDate) {
        this.dropInDate = dropInDate;
    }
}

public class Note implements Serializable {
    private static final long serialVersionUID = -8363339156398741610L;
    private int id;
    private String title;
    private String content;
    private String typeName;
    private int del;
    private int show;
    private NoteType noteType;
    private BeanState beanState;
    private Date createDate;
    private Date updateDate;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }


    public int getDel() {
        return del;
    }

    public void setDel(int del) {
        this.del = del;
    }

    public int getShow() {
        return show;
    }

    public void setShow(int show) {
        this.show = show;
    }

    public NoteType getNoteType() {
        return noteType;
    }

    public void setNoteType(NoteType noteType) {
        this.noteType = noteType;
    }


    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }


    public BeanState getState() {
        return beanState;
    }

    public void setState(BeanState beanState) {
        this.beanState = beanState;
    }

    @Override
    public String getClassName() {
        return "Note";
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    public Date getUpdateDate() {
        return updateDate;
    }

    public void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }
}
问题是FavoriateNote不是Note的一部分,它们只是一对一的关联。如何配置关联以使检索所有FavoriteNotes成为可能?最好以xml方式完成


谢谢

我不明白你的问题。你不需要做更多的事情就可以检索到所有喜欢的笔记。你想做什么?使关联双向?我不知道检索所有喜爱的笔记需要什么配置。正如我所知,组件没有单独的配置xml,它只是在实体hbm xml中配置,但在我的例子中,实体不拥有favorites,Favorite components拥有note实体,这意味着您无法在note.hbm.xml中定义或创建,因此我不知道在何处以及如何创建它。您还没有显示您的映射。你刚才说你有一对一的关系。所以我假设FavoiteNote被映射为一个实体。如果你打算搜索FavoriteNotes,这就是你想要的。如果你把它设计成一个组件,它就不会有自己的存在。这将是一张便条的一部分。只需阅读hibernate文档,了解如何映射实体之间的一对一关联。我建议使用注释。XML配置要困难得多。
session.createCriteria(FavoriteNote.class).list()
提供所有收藏夹否?Note.hbm.XML可以在中找到,实体必须有主键,但显然在我的情况下,FavoriteNotes不必拥有pk,所以我认为它不应该被视为实体。还有其他建议吗?