java - Netbeans 12.0 - 从 DB 生成实体类使用 Java Date 类而不是 LocalDate
问题描述
我正在使用 Netbeans 12.0,并为我的数据库表创建我的实体类,我使用 Netbeans Entity Classes from Database
。date
除了将我的所有列默认为 Java 8 之前的类之外,它的效果很好Date
,而且我最近发现@Temporal
从我的类变量(对应于我的表中的列)中删除注释LocalDate
不会导致问题。
这是 Netbeans 创建的:
@Column(name = "delivery_date")
@Temporal(TemporalType.DATE)
private Date deliveryDate;
这是我的更新版本:
@Column(name = "delivery_date")
private LocalDate deliveryDate;
LocalDate
从我的数据库创建实体类时,是否可以让 Netbeans 使用该类?
我的 Java 应用程序中有许多表具有相应的实体,虽然理论上我可以遍历每个表并用日期替换列,但这听起来并不有趣,尤其是对于未来的实体而言。
我的项目是 Java 8,使用 JPA 2.2 和 EclipseLink 2.7.7。
解决方案
恐怕在使用常规 Netbeans 版本时这是不可能的。
这是负责该映射的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
,那里是硬编码的,无法配置。
您可以从 GitHub 签出 Netbeans 源代码,更改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
这将导致预期的结果。