Java hibernate反向工程列缺少not null属性

Java hibernate反向工程列缺少not null属性,java,hibernate,reverse-engineering,Java,Hibernate,Reverse Engineering,我使用hibernate反向工程从数据库中检索实体(在本例中为oracle数据库)。 我发现在某些情况下,生成的hbm文件中缺少NOTNULL约束。 这取决于如何创建(定义)表(列) 这没关系: CREATE TABLE "MY_TABLE1" ( ... "RECORD_CREATED" DATE DEFAULT SYSDATE NOT NULL ENABLE, ... 然后在hbm文件中,我们得到了该列记录: <column length="7" name="RECORD_CREAT

我使用hibernate反向工程从数据库中检索实体(在本例中为oracle数据库)。 我发现在某些情况下,生成的hbm文件中缺少NOTNULL约束。 这取决于如何创建(定义)表(列)

这没关系:

CREATE TABLE "MY_TABLE1"
(
...
"RECORD_CREATED" DATE DEFAULT SYSDATE NOT NULL ENABLE,
...
然后在hbm文件中,我们得到了该列记录:

<column length="7" name="RECORD_CREATED" not-null="true"></column>
<column length="7" name="RECORD_CREATED"></column>
然后在hbm文件中,我们得到了该列记录:

<column length="7" name="RECORD_CREATED" not-null="true"></column>
<column length="7" name="RECORD_CREATED"></column>

我不明白为什么会这样,为什么hibernate对它如此敏感? 也许只是配置的问题,但我找不到与之相关的东西

有什么问题?为什么在第二种情况下我缺少“notnull=true”属性


谢谢

写下你自己的策略

在maven中引用它,如下所示:

<build><plugins><plugin>
    <artifactId>hibernate3-maven-plugin</artifactId>
    <configuration>
      <components>
        <component>
          <name>hbm2java</name>
        </component>
      </components>
      <reversestrategy>MyStrategyImpl</reversestrategy>
         ...
public class MyStrategyImpl extends DelegatingReverseEngineeringStrategy {
    public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable, boolean generatedIdentifier) {
      if(/*yourJdbcSelects*/){
        nullable = true;
      }
      super.columnToHibernateTypeName(table, columnName, sqlType, length, precision, scale, nullable, generatedIdentifier);
    }
}

您可以永久停用支票。检查不会被解析为错误。因此,hibernate不允许将null作为错误来处理。在第一种情况下,我们都知道,null是一个错误。但我想检查一下,我想找到一种方法,在第二种情况下如何强制hibernate工具生成NOTNULL属性。如果愿意,您可以编写一个自定义策略。你用maven来报复吗?