我试图从一个XSD文件生成一个包含toString、equals和hashCode方法的Java类。我得到了toString的工作,但我无法弄清楚如何让CXF插件生成equals和hashCode方法。
这是我的XSD文件:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/messagedefinitions"
xmlns="http://www.example.com/messagedefinitions">
<xs:element name="Message">
<xs:complexType>
<xs:sequence>
<xs:element name="status" type="Status"/>
<xs:element name="id" type="Identifier"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="Status">
<xs:restriction base="xs:string">
<xs:maxLength value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Identifier">
<xs:restriction base="xs:int"/>
</xs:simpleType>
</xs:schema>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>xsd-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>xsd-demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<cxf.version>2.6.1</cxf.version>
<cxf.xjc.plugin.version>2.6.1</cxf.xjc.plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-tools-common</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf.xjc-utils</groupId>
<artifactId>xjc-utils</artifactId>
<type>pom</type>
<version>${cxf.xjc.plugin.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf.xjc-utils</groupId>
<artifactId>cxf-xjc-runtime</artifactId>
<version>${cxf.xjc.plugin.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>${cxf.xjc.plugin.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${basedir}/target/generated-sources</sourceRoot>
<xsdOptions>
<xsdOption>
<extension>true</extension>
<xsd>${basedir}/src/main/resources/xsd/Message.xsd</xsd>
<bindingFile>${basedir}/src/main/resources/bindings.xml</bindingFile>
<extensionArgs>
<arg>-Xts:style:multiline</arg>
<!--<arg>-Xequals</arg>-->
<!--<arg>-XhashCode</arg>-->
</extensionArgs>
</xsdOption>
</xsdOptions>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-ts:${cxf.xjc.plugin.version}</extension>
<!--<extension>org.apache.cxf.xjcplugins:cxf-xjc-XhashCode:${cxf.xjc.plugin.version}-->
<!--</extension>-->
<!--<extension>org.apache.cxf.xjcplugins:cxf-xjc-Xequals:${cxf.xjc.plugin.version}-->
<!--</extension>-->
</extensions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:version="2.1">
<jaxb:globalBindings>
<xjc:serializable uid="1234"/>
</jaxb:globalBindings>
</jaxb:bindings>
很好,我意识到工件不存在,但我不知道如何配置CXF插件来生成equals和hashCode方法。您知道如何配置CXF插件来生成equals和hashCode方法吗?提前感谢您的帮助。
我无法从XML模式文件中获得cxf-xjc-plugin来生成equals和hashCode方法。我放弃了cxf-xjc-plugin,转而使用maven-jaxb2-plugin。这是我使用的插件配置:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<id>generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<extension>true</extension>
<generatePackage>my.package.name</generatePackage>
<args>
<arg>-XtoString</arg>
<arg>-Xequals</arg>
<arg>-XhashCode</arg>
</args>
<schemaDirectory>${basedir}/src/main/resources</schemaDirectory>
<schemaIncludes>
<include>xsd/*.xsd</include>
</schemaIncludes>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.4</version>
</plugin>
</plugins>
</configuration>
</execution>
</executions>
</plugin>
问题内容: 建议和有时是必要的,即表示值(类 值类 )来覆盖,[和任选]的方法。这些方法返回的值取决于类及其超类的成员变量的全部或子集。为了实现它们正常,你必须了解理论的一点点 散列 和代数和集理论的一点点(不要太多,几乎一切都在explaind 的javadoc 这些方法和有效的Java形式乔希布洛赫。) 在大多数情况下,此方法的实现遵循一个模板,并且IDE(如Eclipse JDT)包括生成它
我已经习惯了从命令行使用XJC工具。但是我意识到我不能使用它生成带有和方法的Java类。我用了这个: 1.可以用CXF XJC Maven插件从DTD文件生成和方法吗?
下面是关于Spring Boot服务器存根的生成,使用swagger代码(-l Spring)。 Swagger codegen 二进制文件(当前:v2.3.1)是否有任何选项可以在没有hashCode()和equals()方法的情况下生成dto模型? 我在配置帮助中没有找到任何选项。我希望生成的 dto 模型扩展一个抽象类,其中 hashCode() 和 equals() 方法已经声明,因此不应
问题内容: 我工作的代码使用从生成从XSD架构的Java类。我正在寻找一种方法来自动实现和这些类的方法,但似乎没有一种方式。我知道还有其他JAXB2 Maven插件可以做到这一点(例如,http://confluence.highsource.org/display/J2B/Home),但是我想知道你们中的任何人以前是否遇到过此问题,以及是否有办法修复它。我正在使用目标生成类。 问题答案: 您提到
问题内容: 在Hibernate中应如何实现模型类的equals和hashcode?有哪些常见的陷阱?默认实现在大多数情况下是否足够好?使用商务钥匙有什么意义吗? 在我看来,要考虑到延迟获取,ID生成,代理等,在每种情况下都无法正确工作。 问题答案: Hibernate有何时/如何重写一个很好的和长期的描述/ 在文档 要点是,如果您的实体将成为的一部分,或者您要分离/附加其实例,则只需担心它。后者
比方说,我有一个班,学生。每个学生对象都有一个唯一的字段(int ID)和其他公共字段(如String schoolName等)。 现在只考虑字段ID生成hashcode()和equals()可以吗?