我有问题,而且我不知道如何解决它。
我有实体:
@Entity
@Table(name = "entity_languagetree")
@AttributeOverride(name = "id", column = @Column(name = "languagetree_id"))
public class LanguageTree extends BaseObject {
@ElementCollection(targetClass = java.lang.String.class, fetch = FetchType.EAGER)
@CollectionTable(name = "view_languagetree_to_stringlist")
private List<String> relationship = new ArrayList<>();
public LanguageTree() {
//
}
public List<String> getRelationship() {
return relationship;
}
public void setRelationship(List<String> relationship) {
this.relationship = relationship;
}
}
其中BaseObject
是
@MappedSuperclass
public class BaseObject {
@Id
@GeneratedValue
@Column(name = "entity_id")
private Long id;
/**
*
* @return true if the entity hasn't been persisted yet
*/
@Transient
public boolean isNew() {
return id == null;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Bean getBean() {
return null;
}
}
使用对象 - 在我的servlet中,我这样调用jsVarTree()
:
String var = jsVarTree();
我的问题,方法jsVarTree
完成后,hibernate从实体relationship
中删除LanguageTree
列表。我不知道为什么!我没有打电话给任何删除等等。(我确定,我在调试器中花了很多时间!)
:
@Override
public String jsVarTree() {
TreeBuilder tb = new TreeBuilder(getLanguageList());
return tb.getJsVarString(); // THIS METHOD IS ONLY GETTER !!!!
}
@Override
public List<String> getLanguageList() {
LanguageTree lt = getLanguageTreeObject();
return lt.getRelationship();
}
@Override
public LanguageTree getLanguageTreeObject() {
long fakingId = languageTreeDao.getLastId();
ServerLogger.logDebug("LAST FAKING ID: " +fakingId);
return languageTreeDao.findOne(fakingId);
}
我在loggor中找到了这个日志:
HibernateLog - &gt; 15:01:03 DEBUG org.hibernate.SQL - 从中删除 view_languagetree_to_stringlist其中LanguageTree_languagetree_id =?
有人可以告诉我,为什么hibernate会在我的表上调用delete?
我在phpmyadmin看到了一张桌子..
TABLE IS FULL.
String var = jsVarTree();
TABLE IS EMPTY.
在return tb.getJsVarString();
完成后删除表。
感谢您的帮助!