2012-04-20 6 views
0

次の問題があります。多分デザインはそれほど良いものではないかもしれませんが、私はより良いものを見つけることができませんでした。エンティティクラスEnumeration内のエンティティマネージャを使用

は、私は、エンティティクラスDevice.java

@Entity (name = "device") 
public class Device { 

public enum DeviceType { 
    STROM, 
    LICHT, 
    TEMPERATUR, 
    LUFTFEUCHTIGKEIT, 
    BEWEGUNG, 
    DIMMEN 
}; 

public static enum HomematicAttribute { 
    STATE, 
    TEMPERATURE, 
    HUMIDITY, 
    LOWBATTERY, 
    MOVEMENT, 
    LEVEL 
} 

@Id 
@GeneratedValue (strategy = GenerationType.IDENTITY) 
private Integer id; 

    // Some other fields and getter and setter 

を持っていると私は、そのクラス/エンティティ

public static enum HomematicDeviceName { 
    LICHT_FRONT("HM_DEVICE_LICHT_FRONT", DeviceType.DIMMEN, HomematicAttribute.LEVEL), 
    LICHT_GANG("HM_DEVICE_LICHT_GANG", DeviceType.DIMMEN, HomematicAttribute.LEVEL), 
    ... 

    // constructor and getters 

    @PersistenceContext 
    EntityManager em; 

    @EJB 
    private DatabaseServiceLocal databaseService; 

    public Device getDevice() { 
     if(em == null) System.out.println("Entitymanager ist null innerhalb der Enumeration ..."); 
     if(databaseService == null) System.out.println("databaseService ist null innerhalb der Enumeration ..."); 

     System.out.println("----"); 
     return (Device) em.createNamedQuery(Device.findByIdentifier).setParameter("identifier", databaseKey).getSingleResult(); 
    } 
} 

両方のemの内側に、この列挙を持っているとdatabaseServiceがnullです。目標は列挙型と他の方法からエンティティを取得することです。私はエンティティと仕事したくない。代わりに私は列挙型で作業したいが、時にはエンティティが必要になる。だから私は、私の列挙からデバイスエンティティを取得するために、このようなことをすることができると思った。

アイデアはありますか?

おかげで、 Hauke

答えて

3

依存性の注入はEJBなどのコンテナによって作成されたオブジェクトでサポートされています。これは、依存関係フレームワークの仕組み(SpringとGoogle Guiceを含む)の通常の方法です。

サービス(現在は使用されていませんか?)またはパラメータとしてEntityManagerを渡すことができます。

+0

依存性注入は、列挙体内でも良いでしょう。しかし、それをメソッドに渡す考えはそれほど悪くはありません。それほど素晴らしいことではありませんが、少なくともそれはうまくいくはずです。 ありがとうございます! – Hauke

関連する問題