-2

是否可以声明一个类型

@????? // 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".
4

2 回答 2

0

是的,可以按如下方式定义 MyDate 类型:

public class MyDate extends java.util.Date {
}

并将其用作实体中的持久属性:

@Entity
public class SomeEntity {
    @Id private int id;

    MyDate date
}

这是可行的,因为它是 Serializable 类型,因此默认情况下它被认为是简单类型并持久化到数据库中。不需要额外的注释。但是你不能对 String 做同样的事情,因为你不能扩展 final 类。

于 2012-08-17T13:28:48.423 回答
0

StringfinalDate不是。你不能扩展前者;您可以扩展后者,但我不建议这样做。

继承表明您的新类具有与其父类不同的行为。我真诚地怀疑您在MyDate. 我敢打赌,“很多逻辑”是被误导的。java.util.Date例如,如果您认为您的新课程将在JODA. 使用图书馆;不要重新发明。Date我敢肯定,您的“大量逻辑”不会对您如何表示 a或将其存储在 SQL 数据库中产生任何影响。

你应该重新考虑你的初衷。

于 2012-08-17T13:20:41.200 回答