내 개체를 저장하려면 ObjectDB을 사용하고 있습니다. 그러나 객체가 내 패키지 (라이브러리에서) 외부에서 만들어지고 전체 라이브러리를 내 프로젝트에 복제하지 않고 주석 만 추가하기 때문에 @Entity
태그로 주석을 추가하지 않은 객체를 저장하려고합니다. 이것은 내가 지속 할 클래스입니다 :JPA에서 @Entity 태그로 주석을 달지 않은 클래스의 객체를 유지하는 방법은 무엇입니까?
package org.telegram.telegrambots.api.objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.telegram.telegrambots.api.interfaces.BotApiObject;
/**
* @author Ruben Bermudez
* @version 3.0
* This object represents a Telegram user or bot.
*/
public class User implements BotApiObject {
private static final String ID_FIELD = "id";
private static final String FIRSTNAME_FIELD = "first_name";
private static final String ISBOT_FIELD = "is_bot";
private static final String LASTNAME_FIELD = "last_name";
private static final String USERNAME_FIELD = "username";
private static final String LANGUAGECODE_FIELD = "language_code";
@JsonProperty(ID_FIELD)
private Integer id; ///< Unique identifier for this user or bot
@JsonProperty(FIRSTNAME_FIELD)
private String firstName; ///< User‘s or bot’s first name
@JsonProperty(ISBOT_FIELD)
private Boolean isBot; ///< True, if this user is a bot
@JsonProperty(LASTNAME_FIELD)
private String lastName; ///< Optional. User‘s or bot’s last name
@JsonProperty(USERNAME_FIELD)
private String userName; ///< Optional. User‘s or bot’s username
@JsonProperty(LANGUAGECODE_FIELD)
private String languageCode; ///< Optional. IETF language tag of the user's language
public User() {
super();
}
public Integer getId() {
return id;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getUserName() {
return userName;
}
public String getLanguageCode() {
return languageCode;
}
public Boolean getBot() {
return isBot;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", firstName='" + firstName + '\'' +
", isBot=" + isBot +
", lastName='" + lastName + '\'' +
", userName='" + userName + '\'' +
", languageCode='" + languageCode + '\'' +
'}';
}
}
을 그리고 그것은 중요한 아무것도 없다하더라도이는 BotApiObject
클래스 :
package org.telegram.telegrambots.api.interfaces;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
/**
* @author Ruben Bermudez
* @version 1.0
* An object from the Bots API received from Telegram Servers
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public interface BotApiObject extends Serializable {
}
내가이 클래스의 복제를 만들 수 있다는 것을 알고, 그것을 주석을 @Entity
으로 바꾸고 어댑터를 사용하여 변환하십시오. 그러나 이것은 낭비입니다. 내가 주석을 달지 않은 클래스를 유지/읽기/수행하는 더 좋은 방법이 있는지 알고 싶습니다.
당신이 "지속"라고, 계속 :
는 예를 들어, META-INF/orm.xml 파일을 추가? RDBMS에서 annot없이 JPA를 사용하거나 클래스를 엔티티로 정의하는'orm.xml '을 사용할 수 없습니다. 어떤 클래스가 엔티티인지를 정의하는'orm.xml' 파일을 사용하여 클래스 자체를 건드리지 않고도 할 수 있으며 기본 JPA가 적용됩니다 – DN1
@ DN1 감사합니다! 나는 정말로 XML 파일 옵션이 존재한다는 사실에 주목하지 않았다. –
그냥 "META-INF"에 넣고 JPA 사양 – DN1