Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何阻止hibernate工具实现可序列化接口_Java_Hibernate_Serialization_Reverse Engineering_Hibernate Tools - Fatal编程技术网

Java 如何阻止hibernate工具实现可序列化接口

Java 如何阻止hibernate工具实现可序列化接口,java,hibernate,serialization,reverse-engineering,hibernate-tools,Java,Hibernate,Serialization,Reverse Engineering,Hibernate Tools,我正在使用hibernate工具生成实体,映射到表。默认情况下,生成的每个实体类都实现了可序列化接口。我们如何才能真正阻止该工具实现可序列化接口。下面是该工具生成的示例测试类。默认情况下,它实现了可序列化接口。我的TestInterface实际上扩展了Serializable接口,所以我不希望它成为测试类 public TestInterface extends Serializable { } @Entity @Table(name = "TEST") public class Test

我正在使用hibernate工具生成实体,映射到表。默认情况下,生成的每个实体类都实现了可序列化接口。我们如何才能真正阻止该工具实现可序列化接口。下面是该工具生成的示例测试类。默认情况下,它实现了可序列化接口。我的TestInterface实际上扩展了Serializable接口,所以我不希望它成为测试类

public TestInterface extends Serializable {

}

@Entity
@Table(name = "TEST")
public class Test implements TestInterface, java.io.Serializable {
..
..    
}
而且在实体的顶部,我们只是将name属性添加到@Table注释中。我还需要该工具将schema属性添加为schema=SampleUser。我还需要向代码中添加serialVersionUID。下面是我需要工具生成的代码

@Entity
@Table(name = "TEST", schema = "SampleUser")
public class Test implements TestInterface{
   private static final long serialVersionUID = 1L;
   ..
   ..    
}

谢谢。

对于这两个问题,您可以遵循以下方法

问题1:删除pojo生成中的可实现接口

决议: Hibernate工具任务使用PojoTypeDeclation.ftl生成pojo类声明

/**
${pojo.getClassJavaDoc(pojo.getDeclarationName() + " generated by hbm2java", 0)}
 */
<#include "Ejb3TypeDeclaration.ftl"/>
${pojo.getClassModifiers()} ${pojo.getDeclarationType()} ${pojo.getDeclarationName()} ${pojo.getExtendsDeclaration()} ${pojo.getImplementsDeclaration()}

..

四年后,但请注意模板名称为:PojoTypeDeclaration.ftl。请参见此处的用法:或者使用maven插件:
<#if ejb3?if_exists>
<#if pojo.isComponent()>
@${pojo.importType("javax.persistence.Embeddable")}
<#else>
@${pojo.importType("javax.persistence.Entity")}
@${pojo.importType("javax.persistence.Table")}(name="${clazz.table.name}"
<#if clazz.table.schema?exists>
    ,schema="${clazz.table.schema}"
</#if><#if clazz.table.catalog?exists>
    ,catalog="${clazz.table.catalog}"
</#if>
<#assign uniqueConstraint=pojo.generateAnnTableUniqueConstraint()>
<#if uniqueConstraint?has_content>
    , uniqueConstraints = ${uniqueConstraint} 
</#if>)
</#if>
</#if>
Eg : If you are using MySql,then
you will not get schema property because mysql DB dont have schema's
concept. Converse is true in Postgress,Hsql,Oracle..