Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 7

0
votes
answers
60 views
+10

Log4j2 JPAAppender BLOB

0

後2天log4j2戰鬥,Hibernate和Spring我終於JPAAppender工作..排序的..Log4j2 JPAAppender BLOB

我跟着這個例子:http://logging.apache.org/log4j/2.x/manual/appenders.html#JPAAppender

例子中的類創建一個表有這個結構:

CREATE TABLE `applicationLog` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `wrappedEvent` tinyblob, 
    PRIMARY KEY (`id`) 
) 

第一個問題是我不能記錄任何東西,因爲tinyblob太小了。我通過將tinyblob更改爲largeblob來手動解決此問題。

第一個問題:有沒有辦法讓類擴展BasicLogEventEntity來自己創建一個largeblob?

第二個問題:如何使用mysql客戶端讀取wrappedEvent?如何從日誌中獲取日誌的純文本?

感謝

沙发
0
0

所以我改變了實體如下,現在在db斑點總是空的(我並不需要它了),在其他列逐漸加入可讀的信息。這只是一個解決方法,但它是我能想到的最好的...

import java.time.Instant; 
import java.time.LocalDateTime; 
import java.time.ZoneId; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 
import lombok.Getter; 
import lombok.Setter; 
import org.apache.commons.lang3.exception.ExceptionUtils; 
import org.apache.logging.log4j.core.LogEvent; 
import org.apache.logging.log4j.core.appender.db.jpa.BasicLogEventEntity; 
import org.hibernate.annotations.Type; 

/** 
* 
* @author syco 
*/ 
@Entity(name = "applicationLog") 
@Table(name = "`applicationLog`") 
public class ApplicationLog extends BasicLogEventEntity { 

    @Getter 
    @Setter 
    @Column(name = "`customEventDate`") 
    private LocalDateTime customEventDate; 

    @Getter 
    @Setter 
    @Column(name = "`customException`") 
    @Type(type = "text") 
    private String customException; 

    @Getter 
    @Setter 
    @Column(name = "`customLevel`", length = 512) 
    private String customLevel; 

    @Getter 
    @Setter 
    @Column(name = "`customLogger`", length = 512) 
    private String customLogger; 

    @Getter 
    @Setter 
    @Column(name = "`customMessage`") 
    @Type(type = "text") 
    private String customMessage; 

    @Getter 
    @Setter 
    @Column(name = "`customThreadName`", length = 512) 
    private String customThreadName; 

    @Getter 
    @Setter 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "`id`") 
    private long id; 

    public ApplicationLog() { 
    super(); 
    } 

    public ApplicationLog(LogEvent logEvent) { 
    super(); 
    if (logEvent != null) { 
     setCustomEventDate(Instant.ofEpochMilli(logEvent.getTimeMillis()).atZone(ZoneId.systemDefault()).toLocalDateTime()); 
     if (logEvent.getThrown() != null) { 
     setCustomException(ExceptionUtils.getStackTrace(logEvent.getThrown())); 
     } 
     if (logEvent.getLevel() != null) { 
     setCustomLevel(logEvent.getLevel().name()); 
     } 
     setCustomLogger(logEvent.getLoggerName()); 
     if (logEvent.getMessage() != null) { 
     setCustomMessage(logEvent.getMessage().toString()); 
     } 
     setCustomThreadName(logEvent.getThreadName()); 
    } 
    } 
} 
0
votes
answers
29 views
+10

我的Hibernate Criteria.list()不斷返回具有空ID的現有數據庫對象

2

我有一個使用Hibernate檢索後端對象的Java Web應用程序。我的Hibernate Criteria.list()不斷返回具有空ID的現有數據庫對象

對於一個特定的類,我始終以各種方式獲得正確的結果 - 除了ID爲空。

我知道我的設置基本上是正確的 - 我能夠查詢包含ID的所有對象的許多其他對象 - 這只是一個我不斷收到空ID的類。

這是我的代碼。我知道沒有什麼可以看到的 - 這是完全相同的代碼行,給我的結果很好,除了一個以外,我的所有課程。只是想知道,如果有人有任何想法,爲什麼一個班可以給你帶空ID的結果......?

Criteria searchCriteria = buildQBECriteria(exampleObj, orderings,     
          startIndex, maxQuantity, matchMode, 
          criteria, false, session); 
List ret = searchCriteria.list(); 

每當exampleObj只是一個特定的類 - 結果都很好,包括ID。

每當exampleObj是一個特定的類 - 它將以各種方式返回正確的結果,除了ID全爲空。

謝謝! 添

+0

@Id@GeneratedValue(strategy = GenerationType.IDENTITY)

註釋id字段通常當我有一個空號,這意味着我沒有與託管實體打交道 – brt

+0

謝謝。我想你很可能會做些什麼。我熟悉實體管理器的概念 - 但我也檢查了我可能想到的所有東西 - 包括確保它在所有以下文件中:applicationContext-hibernate-dao-snapshot.xml,applicationContext-hibernate- dao.xml,applicationContext-hibernate-snapshot.xml,applicationContext-hibernate.xml,applicationContext-hibernate.xml –

+0

我應該提到的其他東西 - 當我執行快照查詢時,我只獲取空ID。當我不做快照時身份證會正常工作。 –

沙发
0
0

如果它僅僅是一個類,你記得如果不使用註解,也許<id name="id" column="id" type="java.lang.String" unsaved-value="null">

0
votes
answers
46 views
+10

在PostgreSQL的where子句中使用XML列

1

我想支持某些DB的hibernate中包含XML內容的列的where子句。我通過擴展org.hibernate.dialect.OraclexDialect類並通過registerFunction方法註冊xml函數來實現Oracle。生成的查詢的示例:在PostgreSQL的where子句中使用XML列

SELECT * 
FROM OM_PERSON this_ 
WHERE xmltype.createxml(this_.config_xml).existsNode('/*[condition/text()="19943"]')=1; 

其在hibernate註冊(對於Oracle)函數:

xmltype.createxml(?1).existsNode(?2) 

現在我想支持PostgreSQL(優選版本:9.6)過了,我找不到任何等效的功能。所以我的問題是在PostgreSQL上面的查詢Oracle有沒有等價的函數/語句?

沙发
0
1

PostgreSQL有一個功能XMLEXISTS,所以你的查詢可以是這樣的:

SELECT * 
    FROM OM_PERSON x 
    WHERE XMLEXISTS('/*[condition/text()="19943"]' PASSING x.config_xml) 

我沒有想法,如何能在Hibernate中使用。

0
votes
answers
41 views
+10

ComponentScan和import org.springframework.context.annotation.ComponentScan無法解析爲類型

0

我的項目在Spring中遇到問題。首先,我無法在服務器上運行它,但是在再次下載所有資源後,它就開始了。ComponentScan和import org.springframework.context.annotation.ComponentScan無法解析爲類型

但現在我有一些進口彈簧在可看不到 例如:

import org.springframework.context.annotation.ComponentScan can not be resolved as a type. 

,並正因爲如此休眠的autwired值

@ComponentScan can not be resolved as a type. 

也沒有創造我的數據庫表(我想所以)

另外兩個配置類有一些錯誤:

類型Spring4Initializer的層次結構是不一致的 SpringSecurityInitializer

public class Spring4Initializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class[] { Spring4Configuration.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return null; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

    @Override 
    protected Filter[] getServletFilters() { 
     CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); 
     characterEncodingFilter.setEncoding("UTF-8"); 
     characterEncodingFilter.setForceEncoding(true); 
     return new Filter[] { characterEncodingFilter }; 
    } 
} 

SpringSecurityInitializer在該行 多個標記 - 類型org.springframework.web.WebApplicationInitializer不能得到解決。它是間接地從 所需的.class文件

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; 

public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer { 

} 

引用我已經試過的Maven乾淨Maven構建

[WARNING] 
[WARNING] Some problems were encountered while building the effective model for pl.dmcs:eschool:war:1.0.0-BUILD-SNAPSHOT 
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.springframework:spring-context:jar -> version ${org.springframework-version} vs 4.3.7.RELEASE @ line 74, column 17 
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: com.fasterxml.jackson.core:jackson-databind:jar -> version 2.8.8 vs 2.8.3 @ line 157, column 15 
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: javax.servlet:servlet-api:jar -> version ${servlet-api-version} vs 2.5 @ line 254, column 15 
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.springframework:spring-context:jar -> version ${org.springframework-version} vs 3.0.5.RELEASE @ line 271, column 14 
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. 
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. 
[WARNING] 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building E-School 1.0.0-BUILD-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ eschool --- 
[INFO] Deleting C:UsersPiotrDesktopE-School	arget 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 

有誰知道我應該怎麼做它,使休眠工作? 在大綱樹中我的函數GetHibernateProperites()被標記爲紅色

沙发
0
0

您是否在您的maven依賴中包含了spring-context?我認爲你錯過了依賴。

+0

我做到了。但仍然不起作用。 –

+0

我可以看到你的pom文件嗎?你正在使用mvn clean install命令嗎? –

+0

http://www.wklejto.pl/310782 –

0
votes
answers
46 views
+10

在Eclipse中我們如何才能連接H2數據庫使用Hibernate for Maven項目

-1

如何使用Hibernate連接H2數據庫用於Maven項目?在Eclipse中我們如何才能連接H2數據庫使用Hibernate for Maven項目

沙发
0
0

您可以使用Spring-boot初始化程序。只需訪問此頁面 - https://start.spring.io/

對於簡單的Spring WebMVC選擇下一個工具:Web,H2,JPA,我會推薦DevTools。

在實際應用中,你需要創建一個這樣JPA庫接口:

包ru.arvsoft.server.core.repository;

import org.springframework.data.jpa.repository.JpaRepository; 
import ru.arvsoft.server.core.domain.Author; 


public interface AuthorRepository extends JpaRepository<Author, Long> { 
} 

而且在某些類使用它:

@Service 
public class AuthorService { 

    private final AuthorRepository repository; 
    private final AuthorMapper mapper; 

    @Autowired 
    public AuthorService(AuthorRepository repository, AuthorMapper mapper) { 
     this.repository = repository; 
     this.mapper = mapper; 
    } 

    public Author getById(Long id) { 
     return repository.findOne(id); 
    } 

    public List<AuthorShortDTO> getAuthors() { 
     return repository.findAll().stream().map(mapper::mapToShortDTO).collect(Collectors.toList()); 
    } 

... 
0
votes
answers
49 views
+10

GORM保存()在Grails是不是在DB

0

節省我有我需要保存對象的列表,我有這個功能GORM保存()在Grails是不是在DB

private saveAll(List<Element> elements){ 
    for(Element element: elements){ 
     element.save(flush:true, insert:true) 
    } 
} 

我的元素類(Groovy類)是類似以下:

@ToString(excludes = 'metaClass,content', includePackage = false, includeNames = false) 
class Element { 

    Integer id 
    MessageSourceType sourceType 
    String key 
    String valueEN 
    String valueDE 
    String valueES 
    String valueFR 
    String valueIT 
    String valuePT 
    String valueAR 
    String valueCMN 
    String valueHI 
    String valuePL 

    static constraints = { 
     sourceType nullable: false, blank: false, maxSize: 256 
     key nullable: false, blank: false, maxSize: 254, unique:true 
     valueEN nullable: true, maxSize: 64000 
     valueDE nullable: true, maxSize: 64000 
     valueES nullable: true, maxSize: 64000 
     valueFR nullable: true, maxSize: 64000 
     valueIT nullable: true, maxSize: 64000 
     valuePT nullable: true, maxSize: 64000 
     valueAR nullable: true, maxSize: 64000 
     valueCMN nullable: true, maxSize: 64000 
     valueHI nullable: true, maxSize: 64000 
     valuePL nullable: true, maxSize: 64000 
    } 

    static mapping = { 
     table "element" 
     id column: "eId" 
     version column: "eVersion" 
     sourceType column: "eSourceType" 
     valueEN column: "eValueEN" 
     valueDE column: "eValueDE" 
     valueES column: "eValueES" 
     valueFR column: "eValueFR" 
     valueIT column: "eValueIT" 
     valuePT column: "eValuePT" 
     valueAR column: "eValueAR" 
     valueCMN column: "eValueCMN" 
     valueHI column: "eValueHI" 
     valuePL column: "eValuePL" 
    } 

    @Override 
    public boolean equals(Object element){ 
     if(element != null && element instanceof Element){ 
      if(this.getKey().equalsIgnoreCase(((Element)element).getKey())){ 
       return true; 
      } 
     } 
     return false; 
    } 

} 

每次保存時,我得到以下日誌:

2017-11-25 16:38:56,787 | TRACE | | localhost-startStop-1 | org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor | executing insertions 
2017-11-25 16:38:56,787 | DEBUG | | localhost-startStop-1 | org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor | executing identity-insert immediately 

但後來當我在DB檢查表我覺得EMP ty,沒有反映插入。我不明白爲什麼不會出現錯誤,或者爲什麼數據沒有保存在數據庫中

您可以檢查我的代碼是否存在任何問題(我是groovy/grails新手)或指南我爲什麼會發生這樣的行爲?

+2

這可能會發生任何原因。其中之一就是稍後有事情要回來。驗證可能失敗(你可以通過在調用'.save(...)'時加入'failOnError:true'來排除這個錯誤。 –

+0

@JeffScottBrown我已經將failOnError設置爲true並將其添加爲save方法的屬性,但是沒有錯誤記錄! –

+0

'failOnError'不一定會導致任何事情被記錄,但如果沒有異常被拋出,表明驗證沒有失敗。沒有看到一個示例項目,可能很難回答你的問題。之前,有很多原因可能導致數據不能保存,只是'element.save(flush:true,insert:true)'不足以診斷問題,抱歉我無法幫助。祝您好運! –

沙发
0
0

試試這個,看看你得到任何類型的錯誤:

private saveAll(List<Element> elements){ 
    for(Element element: elements){ 
     element.validate() 
     if (element.hasErrors()) { 
      element.errors.allErrors.each { 
       println it 
      } 
     } else { 
      element.save(flush: true) 
     } 
    } 
} 

而且,如果白水從服務調用,通過添加靜態屬性(static transactional=false)刪除事務聲明,看看是否會令一個區別。

0
votes
answers
40 views
+10

是什麼@Transaction註釋Spring MVC中,什麼是它的主要目的

-4

什麼是Spring MVC中@Transaction註釋的,什麼是它的主要目的是什麼@Transaction註釋Spring MVC中,什麼是它的主要目的

enter link description here

+0

你有做過什麼研究嗎?閱讀任何文檔?請訪問[幫助]並閱讀[問]以瞭解如何使用本網站。 –

沙发
0
0

鯨,這裏的一些我爲你做的研究: https://www.javacodegeeks.com/2016/05/understanding-transactional-annotation-spring.html

而這個非常有幫助的線程在計算器上: Why we shouldn't make a Spring MVC controller @Transactional?

這些對我幫助很大。

0
votes
answers
67 views
+10

分配舊的對象,以新對象的ID將將它插入重複@ManyToMany

0

我在我的類中的單向@ManyToMany關係,具體如下:分配舊的對象,以新對象的ID將將它插入重複@ManyToMany

@ManyToMany(cascade = { 
     CascadeType.MERGE, 
     CascadeType.PERSIST 
}) 
@JoinTable(
     name=TABLE_NAME_JOB_JOB_TYPE, 
     [email protected](name=COLUMN_JOB_ID, referencedColumnName = COLUMN_JOB_ID), 
     inverseJoinColumns = @JoinColumn(name=COLUMN_JOB_TYPE_ID, referencedColumnName = COLUMN_JOB_TYPE_ID) 
) 
@Fetch(FetchMode.JOIN) 
private Set<JobTypeModel> types; 

我有一個很難更新作業類型的數量,一個工作,因爲一個簡單的錯誤,我終於找到了。 但是,我不知道爲什麼會發生這種情況。

基本上,我做了什麼,是我有一個方法合併舊的和新的工作,而不是採取從newJob的一切,並添加到oldJob,我採用oldJob的ID,並將其分配給newJob 。

所以,像這樣:

public JobModel mergeAndUpdate(JobModel oldJob, JobModel newJob) { 
    getLoggerService().debug(this.getClass().getSimpleName(), "mergeAndUpdate({oldJob}, {newJob})"); 
    //newJob.setId(oldJob.getId()); //If doing this, then it fails 
    //Was trying to avoid doing this: 
    oldJob.setX(newJob.getX()); 
    oldJob.setY(newJob.getY()); 
    oldJob.setZ(newJob.getZ()); 

    return getJobRepository().saveAndFlush(oldJob); 
    //return getJobRepository().saveAndFlush(newJob); 
} 

我JobRepository是延伸org.springframework.data.jpa.repository.JpaRepository

做這件事時,試圖堅持更新(要麼加一,或一個刪除jobType)時的界面,它會失敗。

當添加一個新的jobType時,它會告訴我在關聯表JOB_JOB_TYPE中有一個重複的條目。

Hibernate: insert into job_job_type (job_id, job_type_id) values (?, ?) 
2017-11-26 00:02:28.202 WARN 74560 --- [p-nio-80-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1062, SQLState: 23000 
2017-11-26 00:02:28.202 ERROR 74560 --- [p-nio-80-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : Duplicate entry '187-2' for key 'PRIMARY' 
2017-11-26 00:02:28.203 INFO 74560 --- [p-nio-80-exec-6] o.h.e.j.b.internal.AbstractBatchImpl  : HHH000010: On release of batch it still contained JDBC statements 

從作業集中刪除jobType並保留新作業時,什麼都不會發生 - >關係仍然會保留。

有人知道爲什麼嗎?這樣做,對於沒有@ManyToMany關係的對象(即將舊對象的ID添加到新對象中,而不是將新對象中的所有其他對象添加到舊對象,都將嘗試更新,調用saveAndFlush方法時

我使用: MariaDB的28年1月10日 春季啓動1.5.4(與相關的彈簧引導啓動數據JPA)

+0

行爲對我來說是持久的,在邏輯上,您必須先刪除舊記錄(使用X id),以添加具有相同ID的新記錄。也許嘗試保存字段'整數臨時'id值,刪除舊記錄,並嘗試從'臨時'添加新的ID – newOne

+0

這意味着兩個查詢。我解決問題的方式只使用一個查詢。我只想知道爲什麼其他方法不起作用,並解釋實際發生的情況。而且由於我無法找到任何地方,這個具體問題,我認爲這也可以幫助其他人。 –

沙发
0
0

底線是DB負責。讓它爲你創建所有的ID,不要嘗試在對象上設置ID,如果你插入一個NEW記錄,你可以插入wi th null ID和DB將分配ID,並且在插入課程之前您將不知道ID。但是重要的是,如果你持久保存一個記錄,那就是HJ和ID(在POJO對象上),那麼你需要確定它正在執行'update'操作而不是'insert',否則你會遇到這個問題。

+0

當調用'saveAndFlush'時,它會進行更新。所以如果我設置了一個ID,它會進行更新。如果我從數據庫中獲取記錄,將其映射到對象,該對象還將包含一個ID。如果我更改了上述對象上的其他內容,並保持ID不變,則它會正確執行更新。但是在這裏,我們正在討論@ManyToMany關係,更新發生在父表中,但不會發生在關聯表中。 –

+1

查找「級聯」。如果沒有明顯的級聯方式,您可能需要對兩個表進行手動更新。我在@ManyToMany生鏽而在此之前 https://stackoverflow.com/questions/946938/jpa-manytomany-writing-on-create-but-not-update 都做到了和谷歌這種「彈簧更新@manytomany「:P該搜索將獲得大量命中。 – 2017-11-26 00:25:11

0
votes
answers
42 views
+10

如何將瞬態bean複製到休眠狀態

0

我正在從excel文件執行批量上傳。我想爲新產品創建插入並更新現有的產品,stockId是存在於文件中的唯一密鑰,主鍵是stoneId並且不存在於文件中。插入按預期工作,但我在更新時遇到困難。據我所知,我們不能直接合並hibernate中的瞬態對象,我想知道實現這一點的最佳方法。如何將瞬態bean複製到休眠狀態

我曾嘗試以下選項至今: 1)使用Apache公地的BeanUtils:

Stone s = getStoneByStockNo(t.getStockNo()); 
    Integer id = s.getStoneId(); 
    try { 
     BeanUtils.copyProperties(s, t); 
    } catch (IllegalAccessException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    s.setStoneId(id); 
    entityManager.merge(s); 

這讓我複製了鑰匙進入 'XXXXXXXXX'(stockNo)

2)我已經試過春天BeanUtils的:

Stone s = getStoneByStockNo(t.getStockNo()); 
    String [] ignore = {"stoneId"}; 
    BeanUtils.copyProperties(s, t, ignore); 
    entityManager.merge(s); 

這DONOT給我任何錯誤,但由於某些原因的BeanUtils沒有複製性,我沒有得到任何更新VA梅毒。

3)我想手動設置使用的setter值:

Stone s = getStoneByStockNo(t.getStockNo()); 
    s.setSize(t.getSize()); 
    s.setPurity(t.getPurity()); 
    s.setLab(t.getLab()); 
    entityManager.merge(s); 

這是工作的預期,但我DONOT喜歡這種方式,因爲我有大量的屬性,將有充分的時間來修改代碼當他們的屬性發生任何變化時

可能是我錯過了這裏的東西。任何人都可以提出一個更好的方法來實現這一目標?

沙发
0
0

在第二種方法中,您嘗試合併源目標實體。正如你可以在doc中看到的,它與apache commons BeanUtils相反。

試試這個方法,它將所有值從牛逼複製到小號,並會忽略你在陣列傳遞的值。

Stone s = getStoneByStockNo(t.getStockNo()); 
String [] ignore = {"stoneId"}; 
BeanUtils.copyProperties(t, s, ignore); 
entityManager.merge(s); 
+0

好吧,那是我的不好!謝謝你糾正我。 – Harsh

+0

對於任何面臨類似問題的人來說,這個問題對我非常有幫助:https://stackoverflow.com/questions/29297468/copy-properties-from-one-bean-to-another-not-the-same-class-recursively -inclu – Harsh

0
votes
answers
91 views
+10

persistence.xml文件是不是在classpath

-1

所以我試圖建立使用Wildfly,JPA,Hibernate和MariaDB的使用Maven在Eclipse的adminsystem。我在WildFly管理控制檯中配置了我的數據源,一切正常。 Succesful connection picture in WildFly 現在我試圖寫入該項目與實體管理器工廠的數據庫在Eclipse。但我有此錯誤消息: Error message in Eclipse 在這裏你可以看到我的項目樹: Project treepersistence.xml文件是不是在classpath

這裏是我的POM:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.gyurmatag.adminsystem</groupId> 
<artifactId>adminsystem</artifactId> 
<version>1.0</version> 
<packaging>war</packaging> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 

    <servlet.version>3.1.0</servlet.version> 
    <jsf.version>2.2.12</jsf.version> 
    <primefaces.version>5.3</primefaces.version> 

    <version.wildfly>9.0.2.Final</version.wildfly> 
    <jboss.home>${project.build.directory}/wildfly-${version.wildfly} 
    </jboss.home> 
    <server.config>standalone.xml</server.config> 

    <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version> 
    <maven-dependency-plugin>2.10</maven-dependency-plugin> 
    <maven-resources-plugin.version>2.7</maven-resources-plugin.version> 
    <wildfly-maven-plugin.version>1.1.0.Alpha5</wildfly-maven-plugin.version> 
</properties> 

<dependencies> 
    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>${servlet.version}</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- JSF --> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>${jsf.version}</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>${jsf.version}</version> 
     <scope>compile</scope> 
    </dependency> 
    <!-- PrimeFaces --> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency>  

    <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java- 
client --> 
    <dependency> 
     <groupId>org.mariadb.jdbc</groupId> 
     <artifactId>mariadb-java-client</artifactId> 
     <version>2.2.0</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 


    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate- 
entitymanager --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

</dependencies> 

<build> 
<pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven-compiler-plugin.version}</version> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
      </configuration> 
     </plugin> 
     <!-- Unpack the distribution --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>unpack-wildfly</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>unpack</goal> 
        </goals> 
        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>org.wildfly</groupId> 
           <artifactId>wildfly-dist</artifactId> 
           <version>${version.wildfly}</version> 
           <type>zip</type> 
           <overWrite>false</overWrite> 
           <outputDirectory>${project.build.directory} 
</outputDirectory> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Copy server configuration --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>${maven-resources-plugin.version}</version> 
      <executions> 
       <execution> 
        <id>copy-standalone-xml</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 

<outputDirectory>${jboss.home}/standalone/configuration</outputDirectory> 
         <resources> 
          <resource> 
           <directory>src/main/resources</directory> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <!-- Maven WildFly plugin --> 
     <plugin> 
      <groupId>org.wildfly.plugins</groupId> 
      <artifactId>wildfly-maven-plugin</artifactId> 
      <version>${wildfly-maven-plugin.version}</version> 
      <configuration> 
       <jbossHome>${jboss.home}</jbossHome> 
       <serverConfig>${server.config}</serverConfig> 
      </configuration> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
</build> 

這裏是我的持久性。 XML:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
     version="2.0"> 

      <persistence-unit name="adminsystem" transaction-type="JTA"> 
      <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

       <jta-data-source>jboss/MariaDBDS</jta-data-source> 


       <properties> 
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> 
        <property name="hibernate.hbm2ddl.auto" value="validate" /> 
        <property name="hibernate.show_sql" value="true" /> 
        <property name="hibernate.format_sql" value="true" /> 
        <property name="hibernate.connection.release_mode" value="auto" /> 
       </properties> 
      </persistence-unit> 

這裏是我JPAUtility類:

package com.gyurmatag.adminsystem.model; 


import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 


public class JPAUtility { 
private static final EntityManagerFactory emFactory; 
static { 
     emFactory = Persistence.createEntityManagerFactory("adminsystem"); 
} 
public static EntityManager getEntityManager(){ 
    return emFactory.createEntityManager(); 
} 
public static void close(){ 
    emFactory.close(); 
} 
} 

如果你想採取一個更仔細看看我的項目,你可以在這裏找到:Bitbucket repo

你能幫助我有了這個?

非常感謝! :)

+5

'persistence.xml'就是它應該被稱爲... – DN1

+0

這似乎是一個在問題中錯字... –

+0

是的。這是一個錯字。感謝您的答案! –

沙发
0
0

我懷疑你有太常見了「太多的依賴錯誤」。

更換所有你的依賴與:

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.primefaces</groupId> 
     <artifactId>primefaces</artifactId> 
     <version>${primefaces.version}</version> 
    </dependency>  
</dependencies> 

,看你怎麼去...

+0

我的代碼中存在拼寫錯誤。無論如何感謝您的答案! –

+0

您應該解決您的依賴反正 –

+1

它工作正常... –