如何使用Hibernate逆向工程工具生成或以进行反向关联?

我想向一个集合中添加元素,最终会像这样映射:

      

我想要使​​用Hibernate代替,因为我不关心它们被检索的顺序,我只想保持关联的那一方是最新的。 根据https://www.hibernate.org/117.html,“Hibernate可以添加到,或声明with inverse =”true“而不初始化集合。”

我的问题是我不知道如何强制(或建议)逆向工程工具(hibernate-tools.jar)使用或 – 它总是使用。

谢谢!

您可以使用反向工程配置文件自定义逆向工程过程,该文件使用XML语法。 我自己没试过,但这个例子可能适合你:

    

如果它不能正常工作,您可以在此处找到有关控制逆向工程过程的更多详细信息。

你曾经有过List-type而不是Set-type,你可以使用ant-java-task:

  

使用“de.wedeaf.beans.BeanHelper”类:

 package de.wedeaf.beans; import java.io.*; import org.w3c.dom.NodeList; import com.sun.org.apache.xerces.internal.parsers.DOMParser; public class BeanHelper { public static void main(String[] args) throws Exception { DOMParser parser = new DOMParser(); parser.parse("file:///"+args[0]+"/hibernate.cfg.xml"); NodeList list = parser.getDocument().getElementsByTagName("mapping"); for (int i = 0; list.item(i) != null; i++) { String entityFile = args[0] + File.separatorChar + list.item(i) .getAttributes().getNamedItem("class").getNodeValue().replace('.', File.separatorChar) + ".java"; // Eingabe FileInputStream in = new FileInputStream(entityFile); byte[] code=new byte[in.available()]; in.read(code); in.close(); // Verarbeitung String content=new String(code); content = content.replaceAll("java.util.Set", "java.util.List"); content = content.replaceAll("java.util.HashSet", "jav a.util.ArrayList"); content = content.replaceAll(" HashSet<", " ArrayList<"); content = content.replaceAll("Set<", "List<"); // Ausgabe FileWriter fw = new FileWriter(entityFile); fw.write(content); fw.close(); } } }