Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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.cfg.xml文件中的默认命名策略_Java_Hibernate - Fatal编程技术网

Java 更改hibernate.cfg.xml文件中的默认命名策略

Java 更改hibernate.cfg.xml文件中的默认命名策略,java,hibernate,Java,Hibernate,我试图更改hibernate.cfg.xml中的默认命名策略,但未成功: <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> ... <property name="cfg.namingStrategy">com.kestuboo

我试图更改hibernate.cfg.xml中的默认命名策略,但未成功:

<hibernate-configuration>
 <session-factory>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    ...
    <property name="cfg.namingStrategy">com.kestuboof.util.LowercaseNamingStrategy</property>

com.mysql.jdbc.Driver
...
com.kestuboof.util.LowercaseNamingStrategy

我的策略是从不调用。

数据库对象和模式元素的命名约定由org.hibernate.cfg.NamingStrategy接口的使用实现控制。Hibernate 3.6有四种此接口的实现:

org.hibernate.cfg.DefaultComponentSafeNamingStrategy org.hibernate.cfg.DefaultNamingStrategy org.hibernate.cfg.ejb3命名策略 org.hibernate.cfg.ImprovedNamingStrategy

我决定通过扩展并重写classToTableName()方法来创建自定义命名策略。我的实现的源代码如下所示:

import org.hibernate.cfg.ImprovedNamingStrategy;

public class CustomNamingStrategy extends ImprovedNamingStrategy {

    private static final String PLURAL_SUFFIX = "s";


    @Override
    public String classToTableName(String className) {
        String tableNameInSingularForm = super.classToTableName(className);
        return transformToPluralForm(tableNameInSingularForm);
    }

    private String transformToPluralForm(String tableNameInSingularForm) {
        StringBuilder pluralForm = new StringBuilder();

        pluralForm.append(tableNameInSingularForm);
        pluralForm.append(PLURAL_SUFFIX);

        return pluralForm.toString();
    }
}
下一步是配置Hibernate以使用我的自定义命名策略。如果您使用的是Hibernate,您可以

您可以通过调用配置类的setNamingStrategy()方法来设置对自定义命名策略的引用,如Hibernate参考文档的实现命名策略部分所述

您可以在hibernate XML配置文件中将hibernate.ejb.naming_strategy属性的值设置为CustomNamingStrategy,如hibernate参考手册的XML配置部分所述


如果您使用的是JPA,则可以通过在persistence.xml中将hibernate.ejb.naming_strategy属性的值设置为CustomNamingStrategy来设置使用的命名策略。数据库对象和模式元素的命名约定由org.hibernate.cfg.NamingStrategy接口的使用实现控制。Hibernate 3.6有四种此接口的实现:

org.hibernate.cfg.DefaultComponentSafeNamingStrategy org.hibernate.cfg.DefaultNamingStrategy org.hibernate.cfg.ejb3命名策略 org.hibernate.cfg.ImprovedNamingStrategy

我决定通过扩展并重写classToTableName()方法来创建自定义命名策略。我的实现的源代码如下所示:

import org.hibernate.cfg.ImprovedNamingStrategy;

public class CustomNamingStrategy extends ImprovedNamingStrategy {

    private static final String PLURAL_SUFFIX = "s";


    @Override
    public String classToTableName(String className) {
        String tableNameInSingularForm = super.classToTableName(className);
        return transformToPluralForm(tableNameInSingularForm);
    }

    private String transformToPluralForm(String tableNameInSingularForm) {
        StringBuilder pluralForm = new StringBuilder();

        pluralForm.append(tableNameInSingularForm);
        pluralForm.append(PLURAL_SUFFIX);

        return pluralForm.toString();
    }
}
下一步是配置Hibernate以使用我的自定义命名策略。如果您使用的是Hibernate,您可以

您可以通过调用配置类的setNamingStrategy()方法来设置对自定义命名策略的引用,如Hibernate参考文档的实现命名策略部分所述

您可以在hibernate XML配置文件中将hibernate.ejb.naming_strategy属性的值设置为CustomNamingStrategy,如hibernate参考手册的XML配置部分所述


如果您使用的是JPA,则可以通过在persistence.xml中将hibernate.ejb.naming_strategy属性的值设置为CustomNamingStrategy来设置已使用的命名策略。我对答案的第二部分更感兴趣。您是否建议将此行添加到hibernate.cfg.xml文件中?我对你答案的第二部分更感兴趣。您是否建议将此行添加到hibernate.cfg.xml文件中?com.kestuboof.util.LowercaseNamingStrategy