java获取注解的字段名_java – 如何获取JPA实体的列名

我的所有JPA实体类都实现了一个名为Entity的接口,它的定义如下:

public interface Entity extends Serializable {

// some methods

}

我的JPA实体的一些字段在它们之上有@Column注释,而有些则没有. MyEntity类的定义如下:

@Entity

public class MyEntity implements Entity {

@Id

private Long id; // Assume that it is auto-generated using a sequence.

@Column(name="field1")

private String field1;

private SecureString field2; //SecureString is a custom class

//getters and setters

}

我的删除方法接受实体.

@Override

public void delete(Entity baseEntity) {

em.remove(baseEntity); //em is entityManager

}

每当调用delete方法时,我想在delete方法中有三件事:

1)MyEntity的类型为SecureString的字段

2)DB中该特定字段的列名(该字段可能有也可能没有@Column注释)

3)id字段的值

请注意,当调用delete()方法时,我们不知道它被调用的实体,可能是MyEntity1,MyEntity2等.

我试过做类似下面的事情:

for (Field field : baseEntity.getClass().getFields()) {

if (SecureString.class.isAssignableFrom(field.getType())) {

// But the field doesn't have annotation @Column specified

Column column = field.getAnnotation(Column.class);

String columnName = column.name();

}

}

但这只有在字段有@Column注释时才有效.它也没有让我得到我需要的其他两件事.有任何想法吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值