使用映射的JPA通用实体
问题描述:
有没有使用映射实现JPA实体的方法?无论是扩展HashMap的或含有一个HashMap即:使用映射的JPA通用实体
@Entity
@Table(employee)
public class Employee {
/* .... */
void set(String columnName, Object columnValue) { /*...*/ }
Object get(String columnName) { /*...*/ }
}
和
@RepositoryRestResource
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}
这样一来,就没有必要提供Employee类模型属性。基本上,无论数据库中定义了哪些列,它都将是一个属性,如Employee类中的条目。
Employee emp;
...
emp.get("name");
emp.get("id");
是这样的可能吗?
答
虽然在JPA中不可能,但EclipseLink动态实体(https://wiki.eclipse.org/EclipseLink/Examples/JPA/Dynamic)可能是您想要的。它允许以类似地图的方式与实体一起工作。不过,不确定它是否足够用于你的用例。
不需要。随着新模板的添加,“模式”将不得不动态添加列。而对于RDBMS,您不能在任何明智的应用程序中使用该功能。 –
大多数情况下,这仅适用于查询。其次,让我们假设开发者不会添加额外的属性或列。我正在移植一个.NET应用程序,看起来(我不太了解.NET),.NET可以通过一些GenericEntity来实现。 –