Hibernate - 如何在插入时忽略未映射的字段

时间:2012-05-15 13:19:40

标签: hibernate spring-mvc

亲爱的所有hibernate开发人员,
我在我的应用程序中使用的以下hibernate hbm2java类。当我通过连接两个表从数据库获取数据时,我需要名称字段。 (这个数据我必须在UI的网格中显示。)
但是当我尝试在 rxJournal 表中插入记录时,我遇到了问题 错误是:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'name' in 'field list'  

我想忽略/跳过'name'字段使用hibernate插入或更新记录。 以下是我的HBM课程:

@Entity
@Table(name = "rxJournal", catalog = "Company")
public class RxJournalBean implements java.io.Serializable {

private Integer rxJournalId;
private String entryMemo;
private String name;

    ....

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "rxJournalID", unique = true, nullable = false)
public Integer getRxJournalId() {return this.rxJournalId;}
public void setRxJournalId(Integer rxJournalId) {this.rxJournalId = rxJournalId;}

@Column(name = "EntryMemo")
public String getEntryMemo() {return this.entryMemo;}
public void setEntryMemo(String entryMemo) {this.entryMemo = entryMemo;}

public String getName() {return name;}
public void setName(String name) {this.name = name;}
}

我可以通过单独删除名称字段来创建另一个bean,但是我不想使用冗余代码。请给我任何建议。

如果我问任何重复的问题并指出我正确的解决方案,请忽略。

提前致谢。

1 个答案:

答案 0 :(得分:6)

如果我理解正确,你想在你的实体中有一个name属性,但你希望这个属性是非持久的(即Hibernate完全忽略它)。

如果是这样,那就是@Transient的用途:

@Transient
public String getName() {
    return name;
}

对于Hibernate从数据库加载的每个实例,name属性当然都是null。如果您指定一个值,它将只有一个值。