如何解决Netbeans 12.0-从数据库生成实体类使用Java Date类代替LocalDate
我正在使用Netbeans 12.0,并且要为我的数据库表创建Entity类,我使用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;
从数据库创建实体类时,是否可以使Netbeans使用LocalDate
类?
我的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
那将导致期望的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。