0

have a simple query that I need to only run a select on. Below is the example select statement.

    <named-native-query name="Capacity.findByCapacityCount" result-class="com.model.Capacity">
        <query>    
SELECT MAX_VAL,
      FROM PARAMETER
     WHERE  LOCATION = :facilityCode
       AND FUN_C = :functionName
       AND PAM_TYP = :dayOfWeek
        </query>
    </named-native-query>

For the query results I created a simple Entity class called Capacity.

@Entity 
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Capacity  {        

    @Column(name="PAM_VAL_DCM") 
    private BigDecimal slotCount;

}

When my application starts up I get an error with "No identifier specified for entity". I understated that Entity requires a Id property to be defined but in this case the table doesn't have a true primary key.

I have also tried changing the class to a @Embedable type but I get a the following error "Errors in named queries"

Below is the interface I have created using Repository interface.

public interface CapacityRepository extends Repository<Capacity,String> {

    public Capacity findByCapacityCount(@Param("facilityCode")String facilityCode,
                                                                                   @Param("functionName")String functionName,
                                                                                   @Param("dayOfWeek")String dayOfWeek);
}

So using Spring Data JPA how would configure a class using JPA annotations and the Repository interface to query a table without a primary key?

Oliver Drotbohm
  • 80,157
  • 18
  • 225
  • 211
zachariahyoung
  • 821
  • 4
  • 17
  • 29
  • you may find some answers from this discussion useful http://stackoverflow.com/questions/3820897/jpa-entity-without-id – Leo Aug 03 '14 at 14:10

1 Answers1

2

I don't think this is going to work but that's not due to Spring Data JPA's limitations but JPA not allowing entities without primary keys. See section 2.4 of the JPA specification.

Oliver Drotbohm
  • 80,157
  • 18
  • 225
  • 211