JPA: 정수 목록을 단일 필드에 저장합니다.
표준 JPA 2로 각 엔티티 테이블의 단일 필드에 정수 목록을 저장할 수 있습니까?
@Entity
@Table(name="tbl_myentities")
public class MyEntity {
@ElementaryCollection
@Column(name="vals") // in table tbl_myentities
private List<Integer> vals;
단일 필드에 여러 값을 저장할 수 없습니다.단일 필드에 저장하는 이유는 무엇입니까?
한 가지 방법은 String 유형의 필드를 사용하여 쉼표로 구분된 목록에 모든 정수를 추가하고 게터와 세터를 결합/폭발하는 것입니다.
private String vals;
public setVals(int vals[])
{
// this.vals = Iterate vals[] and create a comma separated string
}
public int[] getVals()
{
// vals.split(",") to get a list of Strings, then typecast/parse them to ints before returning
}
사용@ElementCollection
주석 및@CollectionTable
매핑을 제어하려면 값을 저장할 별도의 테이블이 필요합니다.
@ElementCollection
private Collection<Integer> integers;
요소 컬렉션에 대한 자세한 내용은 http://en.wikibooks.org/wiki/Java_Persistence/ElementCollection 에서 확인하십시오.
여기서 유사한 질문 JPA @ElementCollection 주석은 항상 일대일 관계를 생성합니까?
변환기를 생성하여 @Converter 주석과 함께 사용할 수 있습니다.
이 변환기는 transvertToDatabaseColumn 및 transvertToEntityAttribute 두 가지 메서드를 사용하는 일반 인터페이스인 AttributeConverter를 구현해야 합니다.
jpa 독립적인 사용자 지정 유형 매핑 / javax.persistence.x org.hibernate.notations 대신 jpa 독립 사용자 지정 유형 매핑 / javax.persistence.x를 확인할 수 있습니다.유형 및 org.hibernate.notations를 입력합니다.유형 정의
모든 밸브를 쉼표로 구분하여 String 필드에 저장하고 관련 게터 및 세터를 다음과 같이 변경할 수 있습니다.
public List<Integer> getVals() {
List<Integer> lstVals = new ArrayList<Integer>();
int val = 0;
for(String field : this.vals.split(",")) {
try {
val = Integer.parseInt(field);
}
// If the String contains other thing that digits and commas
catch (NumberFormatException e) {
}
lstVals.add(val);
}
return lstVals;
}
public void setVals(List<Integer> vals) {
String newVals = "";
for(int i : vals) {
newVals.concat(String.valueOf(i));
}
this.vals = newVals;
}
난 그게 가능하다고 생각 안 해.데이터베이스 테이블에는 정수 목록을 저장할 수 있는 열이 있을 수 없기 때문입니다.
정수 목록 대신 문자열 유형 필드를 사용할 수 있습니다.
@Column(name="vals") // in table tbl_myentities
private String vals;
그리고 정수 목록에서 문자열로 변환하고 엔티티를 저장하기 전과 엔티티를 읽은 후 수동으로 뒤로 돌아갑니다.
혹시 @Lob이 당신에게 어울릴 수 있을까요? (의미는 있지만)
@Lob
ArrayList<String> vals;
(수집은 명시적으로 ArrayList여야 합니다.
언급URL : https://stackoverflow.com/questions/9065620/jpa-store-a-list-of-integers-in-a-single-field
'programing' 카테고리의 다른 글
Angular 2 모듈에서 인터페이스를 내보낼 수 없습니까? (0) | 2023.07.08 |
---|---|
IE10 사용자 에이전트로 인해 ASP.Net이 Set-Cookie를 다시 보내지 않음(IE10이 쿠키를 설정하지 않음) (0) | 2023.07.08 |
움브라코, 나만 쓰는 건가요, 아니면 정말 사용하기 어려운 건가요? (0) | 2023.07.08 |
ID가 있는 대량 삽입(자동 증분) 열 (0) | 2023.07.08 |
소스 트리 Windows에서 커밋 메시지 편집(이미 원격으로 푸시됨) (0) | 2023.07.08 |