【问题标题】:Custom @Column JPA Annotations, how to?自定义@Column JPA 注释,如何?
【发布时间】:2014-04-28 16:31:54
【问题描述】:

一直在努力寻找一种解决方案来创建一些自定义 JPA 注释,以在声明实体 POJO 时替换重复字段。有什么帮助吗?这是我想要实现的目标:

//@Column(name = "is_enabled", nullable = false, columnDefinition = "tinyint(1) DEFAULT 1")
@ColumnBooleanNotNullDefaultOne
private Boolean isEnabled;

//@Column(name = "created", nullable = false, updatable = false, insertable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
@ColumnTimestamp
private Timestamp created;

但是,我的尝试失败了……

@Target({METHOD, FIELD})
@Retention(RUNTIME)
@Column // <-- Error here (The annotation @Column is disallowed for this location.)
public @interface BooleanNotNullDefaultOne
{

}

任何帮助都是肯定的。

谢谢!

【问题讨论】:

    标签: java hibernate jpa jpa-2.0 hibernate-annotations


    【解决方案1】:

    生成一个实现 UserType 的新类并使用这个注解:

    @Type(type="fully.qualified.name.of.YourUserType")
    

    另外,@Column 注释只能用于方法或变量。查看 Column 接口定义的 @Target 以了解原因。

    【讨论】:

    • 有趣的是,Hibernate 要求您为您的“UserType”实现 11 种方法,最后,您必须 @Type("giganticQualifiedClassPath"),但我会先看看它。感谢您的帮助。
    • 有一种方法可以为它们创建一个短名称,但我从来没有费心去弄清楚。祝你好运!
    • 可以导入注解类吗?
    • 我想您可以使用 @Type(type=YourUserType.class.getName()),但是您指望自定义类型会在实体之前加载。
    猜你喜欢
    • 2015-04-30
    • 2021-10-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多