0

次の問題があります。デザインはそれほど良くないかもしれませんが、私はより良いものを見つけることができませんでした。

エンティティクラス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です。目標は、列挙からエンティティを取得することです。エンティティと連携したくありません。代わりに、列挙型を操作したいのですが、エンティティが必要になる場合があります。そのため、列挙からデバイスエンティティを取得するために、このようなことができると思いました。

誰かアイデアがありますか?

ありがとう、ハウケ

4

1 に答える 1

3

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

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

于 2012-04-20T09:18:36.683 に答える