gpt4 book ai didi

java - 在实体类的枚举中使用Entitymanager

转载 作者:行者123 更新时间:2023-12-02 00:24:47 29 4
gpt4 key购买 nike

我遇到以下问题。也许设计不是那么好,但我想不出更好的设计。

我有一个实体类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。目标是从枚举和其他方式获取实体。我不想与该实体合作。相反,我想使用枚举,但有时我需要实体。所以我想我可以做这样的事情,以便从我的枚举中获取设备实体。

有人有想法吗?

谢谢,豪克

最佳答案

仅容器创建的对象(例如 EJB)支持依赖注入(inject)。这是依赖框架(包括 Spring 和 Google Guice)的通常工作方式。

您可以传递服务(当前未使用?)或 EntityManager 作为参数。

关于java - 在实体类的枚举中使用Entitymanager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10243202/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com