读书人

Hibernate投射字段注解位置的不同造成

发布时间: 2012-10-25 10:58:58 作者: rapoo

Hibernate映射字段注解位置的不同造成插入数据库结果不同
如下两段hibernate实体代码:

@Entity@Table(name = "NumberIncrement")public class NumberIncrementModel implements Serializable {/** * serialVersionID. */private static final long serialVersionUID = -1555659864049096945L;@Id@GeneratedValue(strategy=GenerationType.AUTO)private Long id;@Column(name = "NUMBER_INCREMENT")private Integer numberIncrement;public NumberIncrementModel(Integer numberIncrement) {this.numberIncrement = numberIncrement;}}


@Entity@Table(name = "JBPM4_NUMBER_INCRECMENT")public class NumberIncrementModel implements Serializable {/** * serialVersionID. */private static final long serialVersionUID = -1555659864049096945L;private Long id;public void setId(Long id) {this.id = id;}public void setNumberIncrement(Integer numberIncrement) {this.numberIncrement = numberIncrement;}private Integer numberIncrement;@Id@GeneratedValue(strategy=GenerationType.AUTO)public Long getId() {return id;}@Column(name = "NUMBER_INCREMENT")public Integer getNumberIncrement() {return numberIncrement + 2;}public NumberIncrementModel(Integer numberIncrement) {this.numberIncrement = numberIncrement;}}


第一种注解放在字段上,第二种注解放在get方法上。当执行插入操作时,数据库中记录是不同的。

NumberIncrementModel numberIncrementModel = new NumberIncrementModel(2);XXXService.insertNumberIncrecement(numberIncrementModel);


其中第一种方式插入的记录的NUMBER_INCREMENT字段值为2,第二种为4.
从这里我们可以推论出,hibernate会根据注解的位置来觉得提取实体属性的方式:是采用标准的JavaBean的get方法,还是直接采用放射。

读书人网 >其他数据库

热点推荐