2012-04-20 2 views
0

다음과 같은 문제가 있습니다. 어쩌면 디자인이 그렇게 좋지는 않지만 더 좋은 디자인을 찾을 수는 없었습니다.엔티티 클래스의 Enumeration에서 EntityManager 사용

내가 엔티티 클래스 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(); 
    } 
} 

모두 그들 안에이 열거를 가지고 databaseService가 null입니다. 목표는 열거 형 및 다른 방법으로 엔티티를 가져 오는 것입니다. 나는 실체와 일하고 싶지 않다. 대신 열거 형을 사용하여 작업하고 싶지만 때때로 엔티티가 필요합니다. 그래서 저는 열거 형에서 장치 엔티티를 가져 오기 위해 이와 같은 작업을 수행 할 수 있다고 생각했습니다.

누구나 아이디어가 있습니까?

덕분 Hauke ​​

답변

3

의존성 삽입은 EJB와 같은 컨테이너에 의해 생성 된 객체를 지원한다. 이것이 의존성 프레임 워크가 작동하는 일반적인 방법입니다 (Spring과 Google Guice 포함).

서비스 (현재 사용하지 않습니까?) 또는 매개 변수로 EntityManager를 전달할 수 있습니다.

+0

의존성 주입은 열거 형 내부에서 좋을 것입니다. 그러나 그것을 메서드에 전달하는 아이디어는 그렇게 나쁘지 않습니다. 별로 좋지는 않지만, 적어도 그렇게하면 효과가 있습니다. 감사합니다. – Hauke

관련 문제