gpt4 book ai didi

java - 如何使用 Eclipselink 选择对象鉴别器列

转载 作者:行者123 更新时间:2023-12-01 10:33:35 25 4
gpt4 key购买 nike

我有一个抽象实体用户和一些继承的类,例如使用 DiscriminatorColumn 作为继承方法的患者。

@Entity
@DiscriminatorColumn(name = "USER_TYPE", discriminatorType = DiscriminatorType.STRING)
public abstract class User {
...
}

@Entity
@DiscriminatorValue("patient")
public class Patient extends User {
...
}

我需要知道对象的类型。我找到了 Hibernate 的解决方案,但我使用 Eclipse Link,并且想编写一个从数据库检索 DiscriminatorColumn 的脚本。我试过了

em.createQuery("SELECT u.user_type FROM User u WHERE u.username = :username", String.class)
.setParameter("username", username)
.getSingleResult();

em.createQuery("SELECT u.class FROM User u WHERE u.username = :username", String.class)
.setParameter("username", username)
.getSingleResult();

但没有一个对我有用,我得到了 IllegalArgumentException

The state field path 'u.class' cannot be resolved to a valid type.

在 Eclipe Link 中可以吗?

最佳答案

感谢 Neil Stockton,我通过获取类名而不是 DiscriminatorValue 找到了解决方案,但它工作得足够好。使用 TYPE(u) 而不是 u.class 效果很好。

em.createQuery("SELECT TYPE(u) FROM User u WHERE u.username = :username", Class.class)
.setParameter("username", username)
.getSingleResult().getSimpleName();

关于java - 如何使用 Eclipselink 选择对象鉴别器列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34948602/

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