是否可以声明类型
@????? // Embeddable?
class MyDate extends java.util.Date implements Serializable{
//.. lots of logic, but no new fields
}
并将其包含在映射中
class Person {
@????
MyDate birthdate;
}
我试过Embeddable / Embedded但我收到此错误消息
[junit] 7109 venses WARN [main] openjpa.MetaData - "birhtdate" declares a null indicator column ""birthdate_null"" whose JDBC type is not compatible with the expected type "integer".
答案 0 :(得分:0)
String
是final
; Date
不是。你无法扩展前者;你可以扩展后者,但我不建议这样做。
继承表明您的新类的行为与其父类不同。我真诚地怀疑你在MyDate
中有一个有意义的区别。我认为“很多逻辑”都是错误的。例如,如果您认为新课程会改善java.util.Date
对众所周知的问题,我建议您尝试使用JODA
。使用图书馆;不要重新发明。我确信你的“大量逻辑”对你如何表示Date
或将其存储在SQL数据库中没有任何影响。
你应该重新考虑你原来的意图。
答案 1 :(得分:0)
是的,可以按如下方式定义MyDate类型:
public class MyDate extends java.util.Date {
}
并将其用作实体中的持久属性:
@Entity
public class SomeEntity {
@Id private int id;
MyDate date
}
这是有效的,因为它是Serializable类型,因此它默认被视为简单类型并持久保存到数据库。无需额外注释。但是你不能对String做同样的事情,因为你无法扩展最终的类。