-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

Stringですfinal; Dateではありません。前者を拡張することはできません。後者を拡張することはできますが、そうすることはお勧めしません。

継承は、新しいクラスの動作が親とは異なることを示しています。に意味のある違いがあるのではないかと心から疑っていますMyDate。私は「たくさんの論理」が誤った方向に進んでいるに違いない。たとえば、新しいクラスでよく理解されている問題が改善されると考えている場合は、代わりにjava.util.Date試すことをお勧めしJODAます。ライブラリを使用します。再発明しないでください。あなたの「たくさんのロジック」はDate、SQLデータベースでの表現や保存の方法にまったく影響を与えないと確信しています。

あなたはあなたの本来の意図を再考するべきです。

于 2012-08-17T13:20:41.200 に答える
0

はい、次のように型 MyDate を定義することが可能です:

public class MyDate extends java.util.Date {
}

エンティティの永続属性として使用します。

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

    MyDate date
}

これは Serializable 型であるため、デフォルトで単純型と見なされ、データベースに永続化されるため、機能します。追加の注釈は必要ありません。ただし、最終クラスを拡張できないため、文字列で同じことはできません。

于 2012-08-17T13:28:48.423 に答える