从数据库为 JPA 实体生成自定义代码

Posted

技术标签:

【中文标题】从数据库为 JPA 实体生成自定义代码【英文标题】:Custom code generation for JPA entities from database 【发布时间】:2014-12-26 08:57:23 【问题描述】:

我在这里要求一种简单的方法来在 Eclipse 从数据库生成的 JPA 实体中添加一些自定义代码。

基本上我想要实现的是添加包含实体属性名称的公共字符串属性,并在我需要提供“属性名称”作为字符串时使用它们,并确保不会出现运行时访问错误。

像这样的

@Entity
@Table(name="clients")
@NamedQuery(name="ClientModel.findAll", query="SELECT c FROM ClientModel c")
public class ClientModel implements Serializable 
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="id_client")
    private long idClient;

    public String name;

    public ClienteModel() 
    

    public long getIdClient() 
        return this.idClient;
    

    public void setIdClient(long idClient) 
        this.idClient = idClient;
    

    public String getName() 
        return this.name;
    

    public void setName(String name) 
        this.name = name;
    

    //CUSTOM CODE
    public static final String idClientProperty = "idClient";
    public static final String nameProperty = "name";

所以我可以使用类似的属性名称

ClientModel.nameProperty

并且在编译时确保他的存在以及在进一步生成实体后名称重构的情况。

我知道 Telosys Tools & co. 的存在,但我希望有一些更简单/更快的东西(比如在使用 JAXB 生成 WSDL_to_entity 时作为插件提供的自定义类)

谢谢。

【问题讨论】:

【参考方案1】:

最后我使用了 Telosys Tools,即使我不想在我的项目中添加另一个工具, 设置起来很容易,只需在这里阅读 https://sites.google.com/site/telosystools/getting-started/21-configure-a-project

在我的具体情况下,我在 getter 创建期间将此代码添加到模板“JPA_bean_with_links”中

#if ( $field.getter )    public static String $field.getterProperty() 
        return "$field.name";
    
#end

【讨论】:

以上是关于从数据库为 JPA 实体生成自定义代码的主要内容,如果未能解决你的问题,请参考以下文章

mybatis generator为实体类生成自定义注释(读取数据库字段的注释添加到实体类,不修改源码)

Springboot jpa:实体无法绑定不在表列中的自定义查询中的数据

从现有数据库生成 JPA 2 实体

Spring Boot Jpa框架自定义查询语句返回自定义实体

JPA的模式:从实体生成数据传输对象DTO并将DTO合并到数据库

JPA 模式:从实体生成数据传输对象 DTO 并将 DTO 合并到数据库