我不知道如何在Hibernate中強制只讀列。如何在Hibernate中設置只讀列?
我想將idgroup設置爲只讀列。即使我設置insertable=false
和updatable=false
,在休眠SQL我可以讀:
Hibernate: insert into groups (description, name, account_idaccount, idgroup) values (?, ?, ?, ?)
,但我想獲得:
insert into groups (description, name, account_idaccount) values (?, ?, ?)
這裏是我的課:
@Entity
@Table(name = "groups")
public class Group implements java.io.Serializable {
private static final long serialVersionUID = -2948610975819234753L;
private GroupId id;
private Account account;
private String name;
private String description;
@EmbeddedId
@AttributeOverrides({@AttributeOverride(name = "idgroup", column = @Column(name = "idgroup", insertable = false)),
@AttributeOverride(name = "accountIdaccount", column = @Column(name = "account_idaccount", nullable = false))})
public GroupId getId() {
return id;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "account_idaccount", nullable = false, insertable = false, updatable = false)
public Account getAccount() {
return account;
}
@Column(name = "description", length = 512)
public String getDescription() {
return description;
}
@Column(name = "name", nullable = false, length = 128)
public String getName() {
return name;
}
..
}
@Embeddable
public class GroupId implements java.io.Serializable {
private int idgroup;
private int accountIdaccount;
@Column(name = "idgroup", insertable= false, updatable= false)
public int getIdgroup() {
return this.idgroup;
}
@Column(name = "account_idaccount", nullable = false)
public int getAccountIdaccount() {
return this.accountIdaccount;
}
..
}
我想有一個只讀col因爲我可以利用IDMS自動生成DBMS,所以我不想在Hibernate中使用密鑰自動生成,因爲它不是羣集安全的。
看看http://docs.jboss.org/hibernate/orm/3.5/reference/en-US/html/readonly.html和http://ndpsoftware.com/HibernateMappingCheatSheet.html - 他們可能會給你提示 –
謝謝瑞秋,但第一個鏈接指的是隻讀實體,而我沒有看到第二個對我的案例 – daniele
有用啊。以爲你可以將樂觀鎖設置爲true –