Netbeans 12.0 - 从数据库生成实体 类 使用 Java 日期 class 而不是 LocalDate
Netbeans 12.0 - Generating Entity Classes from DB uses Java Date class instead of LocalDate
我正在使用 Netbeans 12.0,要为我的数据库表创建实体 classes,我使用 Netbeans Entity Classes from Database
。除了将我所有的 date
列默认为 Java 8 Date
class 之前的事实外,它的效果很好,而且我最近发现删除了 @Temporal
注释从我的 class 变量(对应于我的表中的列)和 LocalDate
不会导致问题。
这是 Netbeans 创建的:
@Column(name = "delivery_date")
@Temporal(TemporalType.DATE)
private Date deliveryDate;
这是我更新后的版本:
@Column(name = "delivery_date")
private LocalDate deliveryDate;
是否可以让 Netbeans 在从我的数据库创建实体 class 时使用 LocalDate
class?
我的 Java 应用程序中有很多表都有相应的实体,虽然理论上我可以遍历每个表并用日期替换列,但这听起来并不有趣,尤其是对于未来实体。
我的项目是 Java8,使用 JPA 2.2 和 EclipseLink 2.7.7。
使用常规 Netbeans 版本时,恐怕这是不可能的。
这是来自 class JavaPersistenceGenerator 的片段,负责该映射:
String getMemberType(EntityMember m) {
String memberType = m.getMemberType();
if ("java.sql.Date".equals(memberType)) { //NOI18N
memberType = "java.util.Date";
} else if ("java.sql.Time".equals(memberType)) { //NOI18N
memberType = "java.util.Date";
} else if ("java.sql.Timestamp".equals(memberType)) { //NOI18N
memberType = "java.util.Date";
}
return memberType;
}
如您所见,java.util.Date
已 hard-coded 且无法配置。
您可以从 GitHub 检出 Netbeans 源代码,在 class 中将 java.util.Date
更改为 java.time.LocalDate
:
org.netbeans.modules.j2ee.persistence.wizard.fromdb.JavaPersistenceGenerator
重建 Netbeans 源并替换文件:
<<NETBEANS_INSTALLATION_FOLDER>>/java/modules/org-netbeans-modules-j2ee-persistence.jar
修正后的版本来自:
<<NETBEANS_SOURCES_FOLDER>>/nbbuild/netbeans/java/modules
这将导致预期的结果。
我正在使用 Netbeans 12.0,要为我的数据库表创建实体 classes,我使用 Netbeans Entity Classes from Database
。除了将我所有的 date
列默认为 Java 8 Date
class 之前的事实外,它的效果很好,而且我最近发现删除了 @Temporal
注释从我的 class 变量(对应于我的表中的列)和 LocalDate
不会导致问题。
这是 Netbeans 创建的:
@Column(name = "delivery_date")
@Temporal(TemporalType.DATE)
private Date deliveryDate;
这是我更新后的版本:
@Column(name = "delivery_date")
private LocalDate deliveryDate;
是否可以让 Netbeans 在从我的数据库创建实体 class 时使用 LocalDate
class?
我的 Java 应用程序中有很多表都有相应的实体,虽然理论上我可以遍历每个表并用日期替换列,但这听起来并不有趣,尤其是对于未来实体。
我的项目是 Java8,使用 JPA 2.2 和 EclipseLink 2.7.7。
使用常规 Netbeans 版本时,恐怕这是不可能的。
这是来自 class JavaPersistenceGenerator 的片段,负责该映射:
String getMemberType(EntityMember m) {
String memberType = m.getMemberType();
if ("java.sql.Date".equals(memberType)) { //NOI18N
memberType = "java.util.Date";
} else if ("java.sql.Time".equals(memberType)) { //NOI18N
memberType = "java.util.Date";
} else if ("java.sql.Timestamp".equals(memberType)) { //NOI18N
memberType = "java.util.Date";
}
return memberType;
}
如您所见,java.util.Date
已 hard-coded 且无法配置。
您可以从 GitHub 检出 Netbeans 源代码,在 class 中将 java.util.Date
更改为 java.time.LocalDate
:
org.netbeans.modules.j2ee.persistence.wizard.fromdb.JavaPersistenceGenerator
重建 Netbeans 源并替换文件:
<<NETBEANS_INSTALLATION_FOLDER>>/java/modules/org-netbeans-modules-j2ee-persistence.jar
修正后的版本来自:
<<NETBEANS_SOURCES_FOLDER>>/nbbuild/netbeans/java/modules
这将导致预期的结果。