Chúng tôi có các lớp sauLàm thế nào để có được những DiscriminatorValue tại thời gian chạy
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) // optional annotation as this is default
@DiscriminatorColumn(name = "apType", discriminatorType = DiscriminatorType.STRING, length = 255)
@DiscriminatorValue("AP")
public class ApplicationProcess {
}
Và đây
@Entity
@DiscriminatorValue("APS")
public class ApplicationProcessScheme extends ApplicationProcess {
}
Bây giờ tôi cần phải biết khi chạy nếu ApplicationProcess
là DiscriminatorValue
AP or APS
. Vì điều này được xử lý tự động bởi jpa, tôi không có cách nào nhận được giá trị này.
Chúng tôi đang gọi một phương thức có tham số ApplicationProcess
làm thông số và tôi muốn tránh sử dụng instanceof
để kiểm tra loại đó là gì. Sẽ mát hơn nếu tôi có thể làm điều gì đó như
applicationProcess.getApType().equals("AP");
@Shervin: Bạn có thể, nhưng nó không phải là một ý tưởng tốt, logic của bạn không nên dựa vào đó . –
@Pascal: Tôi nghĩ tôi phải làm vậy. Về phía xhtml tôi không có cách nào trong biểu thức EL để nói 'instanceof' (tôi nghĩ). Vì vậy, tôi có thể cần điều này. –
@Shervin: Tôi rất tiếc phải nói như vậy nhưng có vẻ như bạn có một lỗ hổng lớn trong thiết kế của bạn, ** xem ** KHÔNG BAO GIỜ phải dựa vào giá trị phân biệt đối xử (điều này đúng với mã doanh nghiệp nhưng thậm chí nhiều hơn cho xem). –