Java hibernate反向工程列缺少not null属性
我使用hibernate反向工程从数据库中检索实体(在本例中为oracle数据库)。 我发现在某些情况下,生成的hbm文件中缺少NOTNULL约束。 这取决于如何创建(定义)表(列) 这没关系: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
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来报复吗?