使用Spring Data JPA的基于属性的查询

时间:2016-08-21 09:12:14

标签: jpa spring-data-jpa jpql

我需要有一个带有System_id,名称,描述等的Registered_Systems表。现在,每个系统可以有n个属性,我计划将这些属性存储在具有外键的子表Registered_System_Attributes(System_id,Attribute_name,Attribute_Value)中到Registered_Systems.System_id

由于属性必须与系统相关联,因此我计划将类RegisteredSystemAttribute设为Embeddable并定义

@Entity
@Table(name = "Registered_Systems")
public class RegisteredSystem {
...

 @ElementCollection
 @CollectionTable(name = "Registered_System_Attributes", joinColumns = { @JoinColumn(name = "System_id", referencedColumnName = "System_id") })
 private Set<RegisteredSystemAttribute> registeredSystemAttributes;
 ...
}

如果以这种方式建模,如何根据属性名称和&amp ;;返回系统名称。提供的价值?

对此的任何帮助都非常受欢迎。

我正在使用

  • 弹簧数据公地1.6.3.RELEASE.jar
  • 弹簧 - 数据 - JP-A-1.4.3.RELEASE.jar
  • (i)hibernate-entitymanager-4.2.14.SP1-redhat-1.jar,(ii) hibernate-jpa-2.0-api-1.0.1.Final-redhat-2.jar由JBOSS EAP 6.3提供

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是JPA 2.1地图集(JSR 388,第2.7节)。所以在你的情况下:

@ElementCollection
@CollectionTable(name="Registered_System_Attributes")
@MapKeyColumn(name="Attribute_name")
@Column(name="Attribute_Value")
private Map<String, String> registeredSystemAttributes;