Hibernate 允许你自定义一些sql 表达式来存取列,但这些用于简单的属性
@Entity
class CreditCard {
@Column(name="credit_card_num")
@ColumnTransformer(
read="decrypt(credit_card_num)",
write="encrypt(?)")
public String getCreditCardNumber() { return creditCardNumber; }
public void setCreditCardNumber(String number) { this.creditCardNumber = number; }
private String creditCardNumber;
}
如果一个属性占用了好几列
@Entity
class User {
@Type(type="com.acme.type.CreditCardType")
@Columns( {
@Column(name="credit_card_num"),
@Column(name="exp_date") } )
@ColumnTransformer(
forColumn="credit_card_num",
read="decrypt(credit_card_num)",
write="encrypt(?)")
public CreditCard getCreditCard() { return creditCard; }
public void setCreditCard(CreditCard card) { this.creditCard = card; }
private CreditCard creditCard;
}
本文介绍Hibernate中自定义SQL表达式的使用方法,包括如何通过@ColumnTransformer注解实现列读写时的数据加密与解密,以及如何处理占用多列的复杂属性。
509

被折叠的 条评论
为什么被折叠?



